VC++ ADO查询mysql数据库报错 10

longi;intnItem;//暂时储存ListControl的行号try{m_pRecordset.CreateInstance("ADODB.Recordset")... long i;
int nItem; //暂时储存ListControl的行号
try
{
m_pRecordset.CreateInstance("ADODB.Recordset");

//m_pRecordset->Open("SELECT * FROM users",_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
_variant_t m_pRecord;

CString strSql="SELECT * FROM `CHARACTER_SETS` ";

m_pConnection->Execute((_bstr_t)strSql,&m_pRecord,adCmdText);

///////////////////////////////////////////
hr = m_pRecordset->get_Fields (&fields); //得到记录集的字段集和

//为了放下查出的数据,把ListControl原来的数据清除了先!
//删除所有记录行
m_LisCtrlResult.DeleteAllItems();

//删除所有列表头
while(m_LisCtrlResult.DeleteColumn(0));

//更新窗口
this->UpdateWindow();

if(SUCCEEDED(hr))
fields->get_Count(&nRstCol); //得到记录集的字段集合中的字段的总个数
for(i = 0; i < nRstCol; i++)
{
fields->Item[i]->get_Name(&bstrColName); //得到记录集中的字段名
strColName[i] = bstrColName;

//////////为列表控件添加字段的名字//////////
m_LisCtrlResult.InsertColumn(i, strColName[i], LVCFMT_LEFT, 70);
}
while(!m_pRecordset->adoEOF)
{
nItem = m_LisCtrlResult.InsertItem(0, NULL); //插入新的一行。把行号放在//了nItem里边。
for(i = 0; i < nRstCol; i++)
{
m_LisCtrlResult.SetItem(nItem, i, 1,_bstr_t s=(_bstr_t)m_pRecordset->GetCollect(strColName[i]); ,NULL, 0, 0, 0); //把读出来的数据项放入ListControl里边
}
m_pRecordset->MoveNext(); //记得使记录指针移动哦
}
////////////////////////////////////////////////
}

catch(_com_error e)///捕捉异常
{
//CString a=e;
//AfxMessageBox(a"Fail to read the database!");///显示错误信息
CString errormessage;
errormessage.Format("Fail to connect the database! \r\n ErroeMessage:%s", e.ErrorMessage);
AfxMessageBox(errormessage); //show the error message
}

初步确定错误在
while(!m_pRecordset->adoEOF)
{
nItem = m_LisCtrlResult.InsertItem(0, NULL); //插入新的一行。把行号放在//了nItem里边。
for(i = 0; i < nRstCol; i++)
{
m_LisCtrlResult.SetItem(nItem, i, 1,_bstr_t s=(_bstr_t)m_pRecordset->GetCollect(strColName[i]); ,NULL, 0, 0, 0); //把读出来的数据项放入ListControl里边
}
m_pRecordset->MoveNext(); //记得使记录指针移动哦
}
编译没错,运行时出错,调用了Catch
展开
 我来答
百度网友9b49351c2
2011-06-10 · 超过15用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:0
展开全部
要把出什么错 贴出来,要不然没法判断 出错原因。
追问
编译没错,运行时出错,调用了Catch
追答
如果是catch,那么可以看看
1)_com_error e. 中,e.Error,e.ErrorMessage 是什么,这就是分析问题的关键。
2)还有你可以在你的代码中用F10单步执行,看看是执行哪一行的时候出有异常。
有这两个信息,就知道是什么问题了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式