sprintf的问题

sunshine502 2009-09-02 04:53:37
我需要将对话框中编辑框里的字符串写入数据库,语句如下
sprintf(SQLchar,"UPDATE SYS_USERINFO SET USERNAME='%s',PASSWORD='%s',DISCRIBE='%s',DEPARTMENT='%s',REMARKS='%s',ISVALIDATE=%d,EMAIL='%s',GISACCOUNT='%s',ISABLEOFFLINE=%d,EXPORTREGION=%f WHERE USER_ID=%d",
userdate.XMofUser,m_Base.encode(userdate.password),userdate.depict,userdate.department,userdate.remark,userdate.isvalidate,userdate.EmailStr,userdate.username,isOffLine,exportRange,userdate.id);

当字符串中含有单引号时,SQL语句执行会有问题,因此我从CEDIT类自己继承了一个类,将其GETWINDOWTEXT改写了一下,处理了单引号(就是将一个单引号变成两个单引号)

这样处理后如果字符串都是英文和数字组成的话没有问题,含有中文且含一个单引号也没问题,但是如果是中文字符串并且夹着两个单引号程序就会在sprintf这里挂掉,不知道是怎么回事。。
...全文
91 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshine502 2009-09-02
  • 打赏
  • 举报
回复
不知道哪个脑残。。这么多内容居然只分配256字节。。自己也脑残了,没注意到这个,浪费好多时间啊
zhongchengli 2009-09-02
  • 打赏
  • 举报
回复
呵呵,恭喜你了,结决了就好!
sunshine502 2009-09-02
  • 打赏
  • 举报
回复
我汗,居然真的是空间分配的太小了,自己测试了几次被表象蒙蔽了,大汗
zhongchengli 2009-09-02
  • 打赏
  • 举报
回复
用CString的Format!
sunshine502 2009-09-02
  • 打赏
  • 举报
回复
应该不是不够大的问题吧。。
sunshine502 2009-09-02
  • 打赏
  • 举报
回复
对了,忘记说了,sprintf语句后面那些参数(userdate.XMofUser,m_Base.encode(userdate.password),userdate.depict,userdate.department,userdate.remark,userdate.isvalidate,userdate.EmailStr,userdate.username,isOffLine,exportRange,userdate.id),都是从CEDIT中GETWINDOWTEXT得来的
xingzhe2001 2009-09-02
  • 打赏
  • 举报
回复
SQLchar不够大吧

64,681

社区成员

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

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