MFC基于对话框的应用程序使用ADO访问数据库
对话框中是一个列表视图控件,数据库表只有两个字段,FunctionIdFunDiscribe.希望通过设置一个变量M的值,有选择性地显示数据库记录。比如,M=5,我就选择...
对话框中是一个列表视图控件,数据库表只有两个字段,FunctionId FunDiscribe.希望通过设置一个变量M的值,有选择性地显示数据库记录。比如,M=5,我就选择FunctionId =5的记录显示在列表框里面。我发现老是出现错误。如下面的代码就可以编译通过,但是如果把"select * from CtrFunc_MTU WHERE FunctionId = 9";修改为 int M =5;"select * from CtrFunc_MTU WHERE FunctionId = M";就通不过。
错误提示:CinAdo.exe 中的 0x7c812a6b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f058 处的 _com_error。中断点在inline HRESULT Recordset15::Open 函数中。
void CCinAdoDlg ::AddToGrid()
{
//连接数据库
OnInitADOConn();
//设置查询字符串
_bstr_t bstrSQL = "select * from CtrFunc_MTU WHERE FunctionId = 5";
//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("FunctionId"));
m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("FunDiscribe"));
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
}
//断开数据库连接
ExitConnect();
} 展开
错误提示:CinAdo.exe 中的 0x7c812a6b 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0012f058 处的 _com_error。中断点在inline HRESULT Recordset15::Open 函数中。
void CCinAdoDlg ::AddToGrid()
{
//连接数据库
OnInitADOConn();
//设置查询字符串
_bstr_t bstrSQL = "select * from CtrFunc_MTU WHERE FunctionId = 5";
//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));
//打开记录集
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
while(!m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("FunctionId"));
m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("FunDiscribe"));
//将记录集指针移动到下一条记录
m_pRecordset->MoveNext();
}
//断开数据库连接
ExitConnect();
} 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询