1.我定义一个类CADOConn专门用来操作数据库,类定义如下://CADOConn.h
class CADOConn
{
public:
void ExitConnect();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
void OnInitADOConn();
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
CADOConn();
virtual ~CADOConn();
};//CADOConn.cpp中的主要函数:void CADOConn::OnInitADOConn()//初始化连接
{
m_pConnection.CreateInstance(__uuidof(Connection));
CString strSQL;
strSQL="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=coursemanager.mdb";
try
{
m_pConnection->Open(_bstr_t(strSQL),"","",adModeUnknown);
}
catch(_com_error e)
{
CString strError;
strError.Format("警告:打开连接发生异常。错误信息:%s",e.ErrorMessage());
AfxMessageBox(strError);
}
}_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL)//执行查询,返回记录集
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePt(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
CString strError;
strError.Format("警告:打开记录集发生异常。错误信息:%s",e.ErrorMessage());
AfxMessageBox(strError);
}
return m_pRecordset;
}void CADOConn::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}2.在StdAfx.h中添加:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")3.但是我在其他类中声明数据库操作类对象CADOConn adoConn;并调用初始化函数连接数据库时出现连接错误:
警告:打开连接发生异常。错误信息:未指定的错误请问这是那里错了 ,该怎么办,请各位高手指教
class CADOConn
{
public:
void ExitConnect();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
void OnInitADOConn();
_RecordsetPtr m_pRecordset;
_ConnectionPtr m_pConnection;
CADOConn();
virtual ~CADOConn();
};//CADOConn.cpp中的主要函数:void CADOConn::OnInitADOConn()//初始化连接
{
m_pConnection.CreateInstance(__uuidof(Connection));
CString strSQL;
strSQL="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=coursemanager.mdb";
try
{
m_pConnection->Open(_bstr_t(strSQL),"","",adModeUnknown);
}
catch(_com_error e)
{
CString strError;
strError.Format("警告:打开连接发生异常。错误信息:%s",e.ErrorMessage());
AfxMessageBox(strError);
}
}_RecordsetPtr& CADOConn::GetRecordSet(_bstr_t bstrSQL)//执行查询,返回记录集
{
try
{
if(m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePt(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
CString strError;
strError.Format("警告:打开记录集发生异常。错误信息:%s",e.ErrorMessage());
AfxMessageBox(strError);
}
return m_pRecordset;
}void CADOConn::ExitConnect()
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}2.在StdAfx.h中添加:
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")3.但是我在其他类中声明数据库操作类对象CADOConn adoConn;并调用初始化函数连接数据库时出现连接错误:
警告:打开连接发生异常。错误信息:未指定的错误请问这是那里错了 ,该怎么办,请各位高手指教
解决方案 »
- 如何像QQ一样在缩小消息窗口(就是要发送消息给别人那个窗口)后
- 关于bezier最小二乘法拟合一条曲线,拟合后如何求曲线上的每一点与拟合出来的bezier曲线的误差?
- 关于CListrCtrl的问题
- 有点难度的问题,高手止步
- googletalk征友(vc开发交流)
- 读取多行文件
- 急问::Debug版本在用CArchive对象发送消息的时候出现ASSERT错误,但程序仍然能够成功发送消息。怎么回事?
- 请教!!设置没有什么问题,串口写失败,请大家帮忙看看是什么问题!程序见帖子。
- 关于用RAW SOCKET发送TCP报文段的问题:用Send 还是Sendto?
- AcdSee如何实现鼠标拖动图片浏览
- 新手学VC,版本选择的疑惑
- 组合框的使用
之前加::AfxOleInit();这个函数初始化com端口,这个MFC用的
具体你可以参考下这个网站
http://hi.baidu.com/%C4%C8%CE%F7%D0%A1%D1%FD/blog/item/372d78c2989bb91e0ff47721.html
if(!AfxOleInit())
{
AfxMessageBox("初始化 OLE DLL 失败:(");
return false;
}
但是返回记录集函数又出错了:
CString strSQL="select * form studentinfo";
CADOConn adoConn;
adoConn.OnInitADOConn();
adoConn.GetRecordSet((_bstr_t)strSQL);
出错信息:Error:-2147217900 Msg:IDispatch error #3092
Descroption:语法错误(操作符丢失)在查询表达式'* form studentinfo'中。Microsoft JET Database Engine我觉得查询表达式没错啊,请问这是怎么回事,谢谢
AfxOleInit()和m_pConnection.CreateInstance(__uuidof(Connection));
前面都加上,看看执行顺序和出错行信息。