今天 太郁闷了,一个小小的BUG浪费了我半天的时间。
在VC中,利用ADO操作数据库的时候,要执行一条带条件的SQL查询,使用方法是:
CString SQLStr = "select * from TABLE WHERE ID=123" ;
_RecordsetPtr pRest;
pRest.CreateInstance(__uuidof(Recordset));
_CommandPtr pMyCom;
pMyCom.CreateInstance(__uuidof(Command));
pMyCom->ActiveConnection = pMyConnect;
pMyCom->CommandText = (_bstr_t)SQLStr;
pRest = pMyCom->Execute(&vNULL,&vNULL,adCmdText);
运行最后一句的时候老是出错,似乎是指针出了问题。
研究了N久,就是没找出毛病,最后把SQL语句换成:
CString ="123"
SQLStr = "select * from TABLE WHERE ID=" ;
SQLStr += "'";
SQLStr += BIANHAO ;
SQLStr += "'";
问题解决!
晕菜,才知道,是SQL语句的问题,道理其实很简单,执行条件查询的时候 ,当字段为文本或字符串的时候,要
在变量两边加上' ',说实在的,这简直是低级的错误,可是,千里之堤,溃于蚁穴。写代码,防微杜渐是没有错的。只有不断地实践,这些错误才可能避免或是减少。
本文描述了在Visual C++中使用ADO进行数据库操作时遇到的一个关于带条件SQL查询的问题及解决方法。作者发现当查询条件为文本类型时,需要在变量两边加上单引号才能正确执行。
395

被折叠的 条评论
为什么被折叠?



