关于拼接SQL串的一点建议

老毕 2012-02-28 12:02:52
常能看见一些朋友发帖求助,问自己的某个SQL查询或者命令为何没有正确执行,最终的结果除了连接故障,多数是传入的SQL串出了问题。所以简单地提一提自己的看法,希望对此能有所帮助。

先,建议使用Parameter传入,而不要拼接SQL字符串,这样可以有效防止SQL注入。
var id = 5;
var strQuery = @"SELECT Id, Amount FROM Orders WHERE Id = @Id";
var cmdQuery = new SqlCommand(strQuery, connection);
cmdQuery.Parameters.Add("@Id", id);


果实在不喜欢Parameter传入,那么拼接SQL字符串时,也尽量使用string.Format()实现。利用占位符{x}代替你要传递的参数,这样方便阅读和修改。
var id = 5;
var strPattern = @"SELECT Id, Amount FROM Orders WHERE Id = {0}";
var strQuery = string.Format(strPattern, id);
var cmdQuery = new SqlCommand(strQuery, connection);
...全文
181 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wslfriend 2012-02-28
  • 打赏
  • 举报
回复
受教了谢谢
EnForGrass 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 abbey 的回复:]

虽然只是一些微不足道的小知识,但是对于string操作而言,类似" "+" "这样的方法实在是太不优雅了,同时也增加了阅读的难度。
[/Quote]
我也有同感,一两个字段我可以忍。但是字段多的话,我忍无可忍
老毕 2012-02-28
  • 打赏
  • 举报
回复
虽然只是一些微不足道的小知识,但是对于string操作而言,类似" "+" "这样的方法实在是太不优雅了,同时也增加了阅读的难度。
SQL77 2012-02-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 abbey 的回复:]
对于连接串ConnectionString,除了通常保存于app.config或者web.config中以外,在代码中需要自己构造时,.NET其实也为我们提供了一定的帮助。

在System.Data.Common命名空间,有一个类DbConnectionStringBuilder,可以帮助我们通过属性设置,构造我们需要的连接串。其中,SQL Server有特供版本。
链接:……
[/Quote]
学习。。
EnForGrass 2012-02-28
  • 打赏
  • 举报
回复
复习一下啊
vinoYang 2012-02-28
  • 打赏
  • 举报
回复
受教了,虽然都知道。。。。。。。。。。
老毕 2012-02-28
  • 打赏
  • 举报
回复
[b]而[/b]对于连接串ConnectionString,除了通常保存于app.config或者web.config中以外,在代码中需要自己构造时,.NET其实也为我们提供了一定的帮助。

System.Data.Common命名空间,有一个类DbConnectionStringBuilder,可以帮助我们通过属性设置,构造我们需要的连接串。其中,SQL Server有特供版本。
链接:DbConnectionStringBuilder 类
连接字符串生成器 (ADO.NET)
dalmeeme 2012-02-28
  • 打赏
  • 举报
回复
完全同意,包括拼sql用string.Format(),不过如果只有一个参数,拼的话我可能用“+”号。

110,534

社区成员

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

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

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