一个莫名其妙的错误

时间:2021-06-30 19:43:40
我用sql建立一个数据库,在取数据库中的数据时,总是出现runtime error 的错误。
_RecordsetPtr print;
print=theApp.m_pRecordset;
print->raw_Close();  ///////////// 就是在这一点出错的!希望有高人                                                 指点一下阿
         int i=0;
CString str;
_variant_t var;
print->Open("select * from     CaseList",theApp.m_pconn.GetInterfacePtr(),adOpenKeyset,adLockPessimistic,adCmdText);
   m_list1.DeleteAllItems();
    int iCount=print->RecordCount;
if(iCount>0)
{
while(!print->adoEOF)
{

var=print->GetCollect("病例号");
     if(var.vt!=VT_NULL)
str=(LPCSTR)_bstr_t(var);
    //m_list1.InsertItem(i,"");
      m_list1.SetItemText(i,0,str);
                  var=print->GetCollect("姓名");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,1,str);
var=print->GetCollect("性别");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,2,str);
                   var=print->GetCollect("年龄");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,3,str);
var=print->GetCollect("身高");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,4,str);
var=print->GetCollect("体重");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,5,str);
var=print->GetCollect("职业");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,6,str);
var=print->GetCollect("身份证号");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,7,str);
var=print->GetCollect("医疗保险号");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,8,str);
var=print->GetCollect("就诊日期");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,9,str);
var=print->GetCollect("联系电话");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,10,str);
var=print->GetCollect("以往病史");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,11,str);
var=print->GetCollect("详细病情");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,12,str);
     var=print->GetCollect("心电数据");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,13,str);
var=print->GetCollect("医师姓名");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,14,str);
var=print->GetCollect("医师科室");
     if(var.vt!=VT_NULL)
   str=(LPCSTR)_bstr_t(var);
      m_list1.SetItemText(i,15,str);
     print->MoveNext();
i++;
}

}

5 个解决方案

#1


print->raw_Close();  ///////////// 就是在这一点出错的!希望有高人                                                 指点一下阿


??之前的状态是关闭的还是打开的,如果还没有打开,就不用再关闭了

if(pRecordset != NULL && pRecordset->State)
  {
   pRecordset->Close();
   
  } 

#2


print->raw_Close();  ///////////// 就是在这一点出错的!希望有高人   
try
{                                              指点一下阿
if(pRecordset != NULL && pRecordset->State)
  {
   pRecordset->Close();
   
  } 
}
catch()

#3


if ((m_pRecordset != NULL) && (adStateOpen == m_pRecordset->State))
{
m_pRecordset->Close();
}

#4


thanks

#5


你的代码没完吧
关闭之前还有什么操作?
另外用close()表用raw_close()

#1


print->raw_Close();  ///////////// 就是在这一点出错的!希望有高人                                                 指点一下阿


??之前的状态是关闭的还是打开的,如果还没有打开,就不用再关闭了

if(pRecordset != NULL && pRecordset->State)
  {
   pRecordset->Close();
   
  } 

#2


print->raw_Close();  ///////////// 就是在这一点出错的!希望有高人   
try
{                                              指点一下阿
if(pRecordset != NULL && pRecordset->State)
  {
   pRecordset->Close();
   
  } 
}
catch()

#3


if ((m_pRecordset != NULL) && (adStateOpen == m_pRecordset->State))
{
m_pRecordset->Close();
}

#4


thanks

#5


你的代码没完吧
关闭之前还有什么操作?
另外用close()表用raw_close()