关于含有单双引号字符串类型的数据插入mysql遇到的问题

来源:互联网 发布:网络教育怎么查学籍 编辑:程序博客网 时间:2024/04/28 20:41
插入数据的SQL语句中,单引号和双引号都行

1.字符串含有单引号问题:
例如语句 “insert into tb_test(abstract) values('you can't get it!')”
如果用以上语句插入到表中时,是插入不成功的,原因是插入的字符串中有单引号,而外面也有单引号,
这个时候,需要对里面的单引号进行处理,即在语句中用两个单引号表示原来的单引号,处理后的语句:
“insert into tb_test(abstract) values('you can‘’t get it!')”

2.字符串含有双引号问题:
例如语句 “insert into tb_test(abstract) values(“you can“t get it!”)”
同理,以上语句也是插入不成功的。
处理方式同上,
“insert into tb_test(abstract) values(“you can“”t get it!”)”
还有一种方法就是在语句中用单引号:
“insert into tb_test(abstract) values(‘you can“t get it!’)”

基于以上的问题,给出一个统一的处理方式,
统一用单引号来处理,这样的话,对于字符串中有双引号,肯定不会有问题,
而如果字符串中出现了单引号,这个时候需要先判断字符串中是否有单引号,
如果有的话,在该单引号后面再加上一个单引号,然后就可以插入数据了。
对于字符串中既含有单引号又含有双引号都可以这样处理。

自己写了一个将字符串中一个单引号替换为两个单引号的方法:

string ReplaceApostrophe(string str){size_t pos = 0;size_t curpos = 0;string::iterator it = str.begin();for (; it != str.end();){curpos = str.find("'", pos);if (curpos != str.npos){str.replace(curpos, 1, "''");pos = curpos + 2;}else{++it;}}return str;}



参考
http://www.educity.cn/wenda/400050.html
http://www.cnblogs.com/dongzhiquan/archive/2011/11/05/2237088.html

0 0
原创粉丝点击