MFC中的SQL查询语句返回空就报错怎么办?

我用MFC连接SQLServer2008,代码如下:ADOConnm_AdoConn;m_AdoConn.OnInitADOConn();CStringsql;sql.F... 我用MFC连接SQL Server 2008, 代码如下:
ADOConn m_AdoConn;
m_AdoConn.OnInitADOConn();
CString sql;
sql.Format("select * from tableuse order by id desc");
_RecordsetPtr m_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet((_bstr_t)sql);
m_pRecordset->MoveFirst();
while(m_AdoConn.m_pRecordset->adoEOF==0)
{
m_grid.InsertItem(0,"");
m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("id"));
m_grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("name"));
m_grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("sex"));
m_grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("age"));
m_pRecordset->MoveNext();
}
m_AdoConn.ExitConnect();
其中m_grid是LIST CONTROL控件,但是,表中的sex列部分是空的,每次执行这句话时就报错,现在想先判断这列是不是空,如果是,就不想列表中添加这行了,如果是,就添加,if语句怎么写?表中确实需要这个列为空。求大侠帮忙
展开
 我来答
百度网友3ecd7d8b0
2011-10-08 · TA获得超过229个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:107万
展开全部
我也遇到过你这样的问题哦,
其实挺简单的,你如果不想报错,就要把数据库中
该列的NULL去掉,什么都不写就是,MFC中在读的时候,碰不到NULL,
它会什么都不显示,相当于_T(""),也就是读到列表控件中“sex”这列什么都没的。
试试吧,实在要留下NULL,也有判断的办法,我找到过,嫌麻烦没用它,这个需要你去搜搜
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a6_gesture
2011-09-28 · TA获得超过108个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:91.1万
展开全部
请先把要执行的sql语句进行判断是否正确,你的代码错误处理太少了。
更多追问追答
追问
sql语句的返回值是空时怎么进行错误处理呀?CString aaa=(char*)(_bstr_t)m_pRecordset->GetCollect("age");if(aaa.isEmpty()){...}else{...}这样写对吗?应该怎样写?
追答
能想到的情况都处理,比如aaa.Replace(" ","");再进行是否为空判断。我说的错误处理是指你操作数据库字符集指针的错误。最容易出错的是这里m_pRecordset->MoveFirst();还有这里while(m_AdoConn.m_pRecordset->adoEOF==0)
{}你没有经过判断数据库返回是否正确就开始乱移动指针程序容易异常
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友96aa8d3
2011-09-28 · TA获得超过433个赞
知道小有建树答主
回答量:2306
采纳率:75%
帮助的人:956万
展开全部
字符串问题

不能是cstring
更多追问追答
追问
请问大侠,怎么改?判断是不是空的语句怎么写?
追答
想用Cstring  isEmpty

然后 (_bstr_t)sql 格式化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式