简单的ado查询语句出错,解决就给分
各位同僚,我的ado中有这么一句话,是想参数查询的,老是出错
strfact="test";
m_pRecordset->Open("SELECT * FROM rule where detail=strfact",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
怎么老是在运行时候显示读取数据库失败阿
但是我要是改成"SELECT * FROM rule where detail=test"就可以,怎么回事阿?我还是想参数查询怎么办?
问题点数:25、回复次数:8Top
1 楼baby_zhx(郁闷)回复于 2002-05-22 11:34:32 得分 0
写错了
是select * from rule where detail='test'时就可以Top
2 楼sammon(努力学习)回复于 2002-05-22 11:44:26 得分 0
拼出来,"select * from rule where detail='" + strfact+"'"Top
3 楼sammon(努力学习)回复于 2002-05-22 11:45:24 得分 7
拼出来"select * from rule where detail='"+strfact+"'"Top
4 楼cityyokel(原来如此)回复于 2002-05-22 12:04:18 得分 7
可以在调用之前做一下工作:
CString strQuery;
strQuery.Format("Select * from rule where detail like '%s'",strfact)
Open(strQuery,...);
更具有通用性一点。Top
5 楼countrynew(吃的苦中苦,方为人上人!)回复于 2002-05-22 12:24:35 得分 4
同意楼上Top
6 楼storein(满天星)回复于 2002-05-22 12:55:18 得分 7
一般我们的SQL语句出现问题都回答
可以执行SQL语句的地方去看看是否SQL语句有问题
比如使用ACCESS
那么就用“查询”来检测SQL语句的问题在何处
象你上面的例子,就是查询字符串时要多加一个 ' ' 对
将字符串包括起来,就可以了
然后才将正确的语句在程序中改写,或使用变量
或格式化Top
7 楼baby_zhx(郁闷)回复于 2002-05-22 16:49:32 得分 0
大哥阿,不行阿,报错如下阿
error C2664: 'Open' : cannot convert parameter 1 from 'class CString' to 'const class _variant_t &'
Reason: cannot convert from 'class CString' to 'const class _variant_t'
No constructor could take the source type, or constructor overload resolution was ambiguousTop
8 楼baby_zhx(郁闷)回复于 2002-05-22 16:53:28 得分 0
而且,我即使是写成这样也不行
CString strQuery;
strQuery="Select * from rule where detail='test'";
m_pRecordset->Open(strQuery,_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
只能写成
m_pRecordset->Open("Select * from rule where detail='test'",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
不知道是为什么阿?
Top
9 楼baby_zhx(郁闷)回复于 2002-05-22 18:16:22 得分 0
hehe谢谢大家,不过问题是解决了,除了大家所说的外,应该加上这么两句
_variant_t sql;
sql=strQuery;
呵呵,要转化成ado认识的查询字符窜所规定的类型就是了
埃,ado真是的^_^Top




