双字节字符与sql语句的问题!

skyMountain 2005-03-24 11:52:06
请看下面代码:
CString strSql;
strSql.format("select * from T_user where name='%s'","罗大佑");
一般情况下这条sql语句执行都没有问题,可是……
"罗大佑"是汉字,每个汉字两个字节,这一串字符总共是6个字节。
现在假设文件出错,最后一个字符弄丢了,这一串字符变成了5个字节。那么问题来了,format之后,strSql变成
select * from T_user where name='罗大?
最后一个“?”是有半个“佑”字加上单引号“ ' ”组成的。因此,这一串sql语句成为不合法语句。

就是这个问题,我追踪了好久才发现的。请问各位大虾,有何解决方法?
...全文
39 点赞 收藏 4
写回复
4 条回复
skyMountain 2005年03月25日
如何判断这种文件出错?靠,我觉得用这种方法甚至可以进行sql攻击!
回复 点赞
LiaoCheng 2005年03月25日
最好是防止文件不要出错!
回复 点赞
skyMountain 2005年03月25日
当然可能,我就是遇到这样一个文件,最后跟踪发现这种情况的。文件在储存或传输、处理的过程中变成乱码,这种情况不算奇怪吧!
回复 点赞
yesyesyes 2005年03月24日
假设文件出错,最后一个字符弄丢了
--------------------------------
可能吗?
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告