数据库表info(id INT,value TEXT),如果需要将一个字符串变量(该字符串变量通常会有几千个字符,而且里面会有很多的单/双引号)插入到数据库中,则sql语句该怎么写呢?如果按照通常的写法:
[code="java"]String sql = "INSERT INTO info (value) VALUES('" + value + "')";(value是字符串变量)[/code]
一旦解析时遇到value变量中的单引号,就会引发sql语句的歧义,有没有什么好的解决办法呢?
直接用jdbc?
如果是这样为什么不考虑用预编译
转义一下看看.就是要插入单引号的地方用\'
将这个字符串中的所有单引号转意为\'
其实整体转义应该也不会影响太多的性能,用个正则一下就完成了。
还有个办法:单引号是数据库默认的字符串的边界符,你只要修改就可以了,就是把数据库中表示字符串起始与结束改用别的符号,Oracle里是可以改的,Mysql你查一下。
处理value这个字符串变量时,遇到单引号(')用replace替换成两个单引号('')
blueBleief说的对。
使用preparedStatement处理,不要拼接字符串,可以解决你的问题,还可以解决sql注入安全问题!