您的位置:首页 > 数据库 > MySQL

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

2015-09-08 16:25 656 查看
插入数据的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ Mysql