<b>对存储历程替换SQL语句的谈论</b>[MSSQL防范]
本文“<b>对存储历程替换SQL语句的谈论</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在项目开辟中,一向有一种声音,要用存储历程替换SQL语句,下文就将对此中的一些概念举行辨析,供您参考.
1.假如说存储历程多了,不好找,那你该查验一下您的命名习惯能否标准能否达意,假如是多人合作的团队,大家更应当关于存储历程的命名有一致的法则,当然,不只存储历程需求这样,其他部份也都要需求这样.好的存储历程命名最好能包含操作名称(insert/update/get/list等),要操作的对象名称(表名)等,这样,即便你的存储历程再多,一样也能快速找到要改的那个,这样命名,还可以让你通过SQL 2000的对象查找功效一次性的按表名找到与此表相关的全部存储历程的名称,同理,你用LIST来查,也可以查到全部LIST功效的存储历程
2,关于第二种概念,我是不大赞成的,在过往的例子中,我发现,将SQL语句从代码中别离出来,带来的好处远宏大于害处,并且这样更符合分层的原则,假如我们将SQL语句嵌入到代码中,当你仅需求多获得一个字段的值,大概对SQL语句本身做一些改正时,你就必必要编译,然后上传DLL,而假如你是用存储历程的话,你直接改一下存储历程就行了,并且,将二者别离,DBA写好存储历程,列好阐明及利用法则,交给负责写DAL层的同学,DAL层的同学闭上眼无需理解SQL语句,也可完成他的工作,因此,从这个角度来说,很好的脱离了工作,不必要要写DAL层的同学也是SQL存储历程高手了
3,避免注入攻击,假如不用存储历程而用嵌入式SQL,你势必要为了避免注入攻击而对输入的用户数据做更多的处理工作,比方处理一些SQL敏感字符等
4.更为重要的是,假如你要朝一个表中插入的是一个BINARY内容的时刻,莫非你会用SQL语句吗?
5,嵌入式SQL分外是拼贴SQL语句,一向是对比简单出问题的环节,而存储历程在写的时刻,就经过查抄,储如漏掉标记,INSERT的字段数目与参数数目不一致的小错误,会当即被改正
6,谁都知道存储历程是预编译的
7,假如你是高手,你可以解析并优化存储历程来提高性能(从前记得看过MS的一个牛人技术支持报告存储历程解析和优化,非常启迪人)
最常见的是,在实际应用中,为了削减DATASET数据集的大小和提高性能,普通我们只SELECT当前需求的字段,但是,随着发展,你可以需求其他字段,这时,假如用嵌入SQL,就要改正SQL语句,编译,再写上绑定该字段的表达式,但是,假如用存储历程,你只要绑定表达式,然后给存储历程中加上这个字段名便可以了.
再如,假如用STRING来拼贴SQL的INSERT语句,那极大概是这样拼
string strSql="insert into table (id,username,password,address) value ("+Id.ToString()+","+UserName...
这样拼贴,多加个字段时,一花眼,就拼贴错了
假如用存储历程,你顶多用
SqlParameter myPara=new SqlParameter("@field5",Field5);
再在存储历程里加上这个输入参数便可以了,和改正一下SQL语句就行了,SQL还会在改正历程中帮你查抄语法
后者明显比前者用那么多+号与双引号拼贴出错的概率小多了
以上是“<b>对存储历程替换SQL语句的谈论</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |