求助“Runtime Error”

machiatto001 2009-11-03 06:01:27
最近在学数据库的编程想写一个电话本的程序,刚刚开始就出问题了,当我选择nflag=1时,出现查询结果的同时出现“Runtime Error”,当我选择nflag=2时,结果都没有,过好长一会儿出现“Runtime Error”,不知道是怎么回事,请高手指点指点。
void CPhoneBookDlg::OnBtnQuery()
{
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pcmd(__uuidof(Command));
pConn->ConnectionString="Provider=SQLOLEDB.1;Persist Security Info=False;Integrated Security=SSPI;User ID=sa;Initial Catalog=PhoneBook;Data Source=MICROSOF-B77E96";
pConn->Open("","","",adConnectUnspecified);
if(1==nflag)
{
pRst=pConn->Execute("select * from famliy",NULL,adCmdText);
while(!pRst->cjEOF){
for(int i=0;i<pRst->Fields->Count;i++){
m_list.InsertItem(i,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_id"))->GetValue()));

m_list.SetItemText(i,1,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_name"))->GetValue()));

m_list.SetItemText(i,2,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_phone"))->GetValue()));

m_list.SetItemText(i,3,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_mobile"))->GetValue()));
m_list.SetItemText(i,4,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_email"))->GetValue()));

m_list.SetItemText(i,5,(char*)(_bstr_t)(pRst->Fields->GetItem(_variant_t("famliy_address"))->GetValue()));
pRst->MoveNext();
}
}
}
else if(2==nflag){
pRst=pConn->Execute("select * from friends",NULL,adCmdText);

while(!pRst->cjEOF){
_variant_t varNo;
_variant_t varName;
_variant_t varAge;
_variant_t varSex;
_variant_t varPhone;
_variant_t varMobile;
_variant_t varQQ;
_variant_t varEmail;
_variant_t varAddress;

varNo = pRst->GetCollect("friends_id");
varName = pRst->GetCollect("friends_name");
varAge= pRst->GetCollect("friends_age");
varSex = pRst->GetCollect ("friends_sex");
varPhone=pRst->GetCollect("friends_phone");
varMobile=pRst->GetCollect("friends_mobile");
varQQ=pRst->GetCollect("friends_qq");
varEmail=pRst->GetCollect("friends_email");
varAddress = pRst->GetCollect ("friends_address");

CString strNo =(char *)_bstr_t(varNo);
CString strName =(char *)_bstr_t(varName);
CString strAge =(char *)_bstr_t(varAge);
CString strSex =(char *)_bstr_t(varSex);
CString strPhone =(char *)_bstr_t(varPhone);
CString strMobile =(char *)_bstr_t(varMobile);
CString strQQ =(char *)_bstr_t(varQQ);
CString strEmail =(char *)_bstr_t(varEmail);
CString strAddress =(char *)_bstr_t(varAddress);

strNo.TrimRight();
strName.TrimRight();
strAge.TrimRight();
strSex.TrimRight();
strPhone.TrimRight();
strMobile.TrimRight();
strQQ.TrimRight();
strEmail.TrimRight();
strAddress.TrimRight();

for(int i=0;i<pRst->GetRecordCount();i++){
m_list.InsertItem (i,strNo);
m_list.SetItemText (i,1,strNo);
m_list.SetItemText (i,2,strName);
m_list.SetItemText (i,3,strAge);
m_list.SetItemText (i,4,strSex);
m_list.SetItemText(i,5,strPhone);
m_list.SetItemText(i,6,strMobile);
m_list.SetItemText(i,7,strQQ);
m_list.SetItemText(i,8,strEmail);
m_list.SetItemText(i,9,strAddress);
}
pRst->MoveNext();
}
}
else if(3==nflag){
pRst=pConn->Execute("select * from client",NULL,adCmdText);
while(!pRst->cjEOF){
((CListBox *)GetDlgItem(IDC_LIST))->AddString(
(_bstr_t)pRst->GetCollect("client_mobile"));
pRst->MoveNext();
}
}
else MessageBox("请选择一个表!");

pRst->Close();
pConn->Close();
pRst.Release();
pConn.Release();
CoUninitialize();
}

...全文
146 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengde007 2009-11-03
  • 打赏
  • 举报
回复
半天没有看见nflag从哪来;
机智的呆呆 2009-11-03
  • 打赏
  • 举报
回复
检查指针访问是否有越界的地方,尤其是修改数据时~~
machiatto001 2009-11-03
  • 打赏
  • 举报
回复
自己先顶一贴

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧