日期:2014-05-17  浏览次数:20396 次

asp.net 执行1个update 出错
asp.net 执行1个update 出错 
检查 sql 发现是 update a set field1='123'23'"' where id=1 
值是123'23' 所以导致sql 不能正确执行 
有没有什么方式让语句正常(sqlserver2005) 

测试
insert into a(a) values('Ll4oK''8g')
declare @a varchar(12)
set @a='Ll4oK'
set @a=@a.replace("'","''")
print @a
insert into a(a) values(@a)
必须把单引号 转双引号? 有没有其他方法解决问题?
(种方法 第一种 通过params的方式 不知道 这样不行不可行 第二种把'这个符号 存进去的时候特换成,或者其他特殊字符 取出来的时候 再反替换)

------解决方案--------------------
可以用参数化更新

update a set field1=@field1 where id=@id
------解决方案--------------------
不要拼串,用参数,这个是最基本的要求了

------解决方案--------------------
那个不叫做双引号,而是两个单引号。

为什么你会对转义这么抵触呢?这值得思考。这往往是老板判断一个开发人员的熟练程度的标志,就是看你是否对基本的规范总是抱着愤青的态度而去绕道而行。

在编程中,假设遇到要拼sql字符串的地方,通常必须写
C# code
var sql="insert into a(a) values ('"+
    theTextBox.Text.Replace("'","''") +"')";

------解决方案--------------------
在拼sql字符串时必须处理字符串中(可能)带单引号的情况。例如
C# code
var sql="insert into a(a) values ('"+ theTextBox.Text.Replace("'","''") +"')";