拼接sql语句问题,插入的数据中包含特殊字符 编译器报错

Pc498471249 2013-01-19 04:42:51
这是存储过程

ALTER PROCEDURE [dbo].[AddData](@QQNumber bigint,@QQPassword varchar(1000),@BeiZhu varchar(1000)=null)
AS
BEGIN
declare @tableNumber varchar(10);
declare @sql nvarchar(2000);
set @tableNumber=Substring(CONVERT(varchar(20),@QQNumber),1,5);
set @sql='insert into tab_'+@tableNumber+' (QQNumber,QQPassword,BeiZhu) values('''+Convert(varchar(20),@QQNumber)+''','''+@QQPassword+''','''+isnull(@BeiZhu,'NULL')+''')';
exec(@sql);
END


有个密码是这样的YANGjun'/,QIang 当插入这条数据的时候就提示错误了, ,后面的括号不完整 ,求解
...全文
464 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiashaxuan 2014-09-15
  • 打赏
  • 举报
回复
[color=#800000]大苏打[/colo
引用
r]
wl076 2013-01-21
  • 打赏
  • 举报
回复
把 ' 替换成 ''' 就好了
Pc498471249 2013-01-21
  • 打赏
  • 举报
回复
引用 6 楼 wl076 的回复:
把 ' 替换成 ''' 就好了
不行噢 ~
hard_learner 2013-01-21
  • 打赏
  • 举报
回复
使用参数的方式吧
  • 打赏
  • 举报
回复
密码存明文不安全的,改存密文吧
Pc498471249 2013-01-20
  • 打赏
  • 举报
回复
引用 3 楼 boyqing 的回复:
SQL:''''==>等价于字符串内包含一个',也可看作是'就是转义,这样就好理解了
因为数据量太大, 所以分了表, ,在添加数据的时候不确定表名,存储过程里的sql就必须用字符串拼接了, 这样特殊字符就会出错, 在哪里对要插入的值进行转义?C#里?
boyqing 2013-01-19
  • 打赏
  • 举报
回复
SQL:''''==>等价于字符串内包含一个',也可看作是'就是转义,这样就好理解了
Kation 2013-01-19
  • 打赏
  • 举报
回复
最好都用参数代替 参数是最好的解决方法,还能避免sql注入
  • 打赏
  • 举报
回复
set @QQPassword=replace(@QQPassword,'''','''''')

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧