关于exec(sql)和单引号问题。

enaking 2020-01-06 12:40:12
在写exec(sql)时,经常写参数时,有时一对单引号,二对单引号,三对单引号,如下例句,请问有没有这方面规则性的文档描述这方面的规则,给一个,谢谢。

exec('select * from table where t1=''' + @str + '''')

exec('update bk_Book set bDate=''" +//bDate是两个单引号
DateTime.Now.ToString() + "'' where BookName='''+@BookName+''''//这里又是三个单引号。

exec('select * from products where name=''商品''')

还有一对单号的参数,我暂时没有找到一对单引号的例句。


...全文
226 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
enaking 2020-01-06
  • 打赏
  • 举报
回复
引用 1 楼 github_36000833 的回复:
最好的实践,就是用参数化查询
select * from products where name=@name


希望有一个规则的文档,就相当于语法,就能自己拼接,不然是片空白,如何实践。
github_36000833 2020-01-06
  • 打赏
  • 举报
回复
最好的实践,就是用参数化查询。 select * from products where name=@name
  • 打赏
  • 举报
回复
使用sp_executesql
andy_wanhl 2020-01-06
  • 打赏
  • 举报
回复
sql 语句 select * from table where field='a' 一般整型不需要单引号,字符串必须要,除非字段类型是字符串,给的值又是整型。 然后,要拼接,在c#中,拼接,都是"字符a" + "字符b"。 所以,要拼接的话,先把sql写上,在拼接,就不会错了。比如上面的。 'a' => '" + 变量 + "'
正怒月神 2020-01-06
  • 打赏
  • 举报
回复
引用 5 楼 enaking 的回复:
[quote=引用 4 楼 正怒月神 的回复:] 的确应该使用参数化查询, 而且还能一定程度规避 sql注入攻击。 回到你的问题。其实sql的单引号怎么写, 还是看经验。你多断点把sql打印出来,就知道为什么了。
我是选择参数化查询,也知道sql打印,但知道规则不是写复杂的sql更有高效。 [/quote] 其实没什么特别的规则。 1 单引号成对出现,用来修饰sql中的字符类型。 2 单引号转义出现 在sql中,如果要单独输出一个单引号,就需要2个单引号。 基本就这样了。也没什么特别的规定和规则
雨何方 2020-01-06
  • 打赏
  • 举报
回复
exec('select * from table where t1=''' + @str + '''') 建议:exec(string.Format("select * from table where t1='{0}'",str)); exec('update bk_Book set bDate=''" +//bDate是两个单引号 DateTime.Now.ToString() + "'' where BookName='''+@BookName+''''//这里又是三个单引号。 建议:exec(string.Format("UPDATE bk_Book set bDate='{0}' WHERE BookName='{1}'",DateTime.Now.ToString(),BookName)); exec('select * from products where name=''商品''') 建议:exec(string.Format("select * from products where name='{0}'","商品"));
enaking 2020-01-06
  • 打赏
  • 举报
回复
引用 4 楼 正怒月神 的回复:
的确应该使用参数化查询,
而且还能一定程度规避 sql注入攻击。

回到你的问题。其实sql的单引号怎么写,
还是看经验。你多断点把sql打印出来,就知道为什么了。


我是选择参数化查询,也知道sql打印,但知道规则不是写复杂的sql更有高效。
正怒月神 2020-01-06
  • 打赏
  • 举报
回复
的确应该使用参数化查询, 而且还能一定程度规避 sql注入攻击。 回到你的问题。其实sql的单引号怎么写, 还是看经验。你多断点把sql打印出来,就知道为什么了。
github_36000833 2020-01-06
  • 打赏
  • 举报
回复
引用 2 楼 enaking 的回复:
... 希望有一个规则的文档,就相当于语法,就能自己拼接,不然是片空白,如何实践。
重复一下。 最好的实践,就是不要自己拼接,就是不用单引号 :)

110,538

社区成员

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

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

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