longi;intnItem;//暂时储存ListControl的行号try{m_pRecordset.CreateInstance("ADODB.Recordset");//m_pRecordset->Open("SELECT*FROMusers",_variant_t((IDispatch*)m_pConnection,...
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
展开