hur.cn - 华软网

 热门搜索

关于SQL语句。

  作者:未知    来源:网络    更新时间:2011/10/9
extern CString strText;

C++">
m_pRecordset->Open("SELECT * FROM UserTbl Where Name like '%" + strText + "%'",                // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}


为啥出错呢。
---华软 网友回答---
1)贴出错信息。
2)把其中的SQL语句放到“查询管理器”运行看有没有错。
3)注意 ' " 号的写法。
---华软网友回复---
%要转义
写成\%
---华软网友回复---
C++">
m_pRecordset->Open("SELECT * FROM UserTbl Where Name like '\%"+ strText +"\%'",                // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);

还是一样出错。
提示如下:
2 IntelliSense: 没有与这些操作数匹配的 "+" 运算符
---华软网友回复---
C++">
"SELECT * FROM UserTbl Where Name like '12345'"

这样写的话,没有错误。
---华软网友回复---
不对...字符串直接+?!
要先搞成CString才能+
---华软网友回复---
引用 5 楼 ndy_w 的回复:
不对...字符串直接+?!
要先搞成CString才能+


能否讲详细点。
---华软网友回复---
%%

格式化百分号是这样两个%的
---华软网友回复---
引用 7 楼 mayudong1 的回复:
%%

格式化百分号是这样两个%的

怎么可能。
---华软网友回复---
VC比C#难多了
---华软网友回复---
引用 7 楼 mayudong1 的回复:
%%

格式化百分号是这样两个%的

不过,还是原问题。
---华软网友回复---
先用sprintf格式化字符串,再放进open里吧。

---华软网友回复---
  m_pRecordset->Open(_T("SELECT * FROM UserTbl Where Name like '\%")+ strText +"\%'",......)  试试看。
---华软网友回复---
_RecordsetPtr的Open方法,第一个参数是_variant_t,而_variant_t没有这样的构造方法和强制转换的类型。
可以查看http://msdn.microsoft.com/en-us/library/k74e1xsh.aspx
如果要这样格式化,可以定义一个临时的CString,再格式化字符串。
CString cstr;
cstr.Format("SELECT * FROM UserTbl Where Name like '\%%s\%'", strText);
或者用sprintf也可以。
---华软网友回复---
CString strSQL;
_RecordsetPtr m_pRecordset=NULL;

strSQL.Format("SELECT * from XXTable WHERE XXID = '%s'",strXXID);

m_pRecordset->Open(_variant_t(strSQL), m_pConnect.GetInterfacePtr(),  adOpenForwardOnly,adLockReadOnly, adCmdText);


VC6+ADO一直可以以上这样写
---华软网友回复---
谢谢各位。新手,太急于求成。工作要完成不得已。

m_pRecordset->Open(_T("SELECT * FROM UserTbl Where Name like '%")+ strText +"%'",


这样OK.      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。