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();
}
展开
 我来答
ranxiufengyu
2010-05-04
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
sql语句写的不对。要用动态的SQL语句要么用带参数的。要么这样也可以。 string M =5;'select * from CtrFunc_MTU WHERE FunctionId ='+ M;
SQL语句是以字符串的形式传送的
吴山碧
2010-04-21 · TA获得超过272个赞
知道答主
回答量:106
采纳率:0%
帮助的人:138万
展开全部
sql语句不支持啊,,你必须写成FunctionId = 5
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式