Sunshine.NET

专注技术,不只关注技术

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  44 随笔 :: 0 文章 :: 101 评论 :: 0 引用

  在我最近的这个项目中,没有允许程序员把SQL语句写在代码中,而是必须用存储过程实现,即使是SELECT语句。我认为这样做利大于弊。当然,我这个项目并不是很复杂,存储过程大概二百个左右。
  我认为,不允许在代码中出现SQL语句的好处有几点:
  1.避免混乱。需求的变动总会引起数据的变动,更改数据访问只去集中在一起的存储过程中改,而不是在代码中到处翻动,使得代码很清晰。
  2.性能优势。《SQL Server 2005技术内幕》中说,存储过程将重用已缓存的执行计划,节省了分析,解析,优化代码所需的CPU资源和时间。
  3.代码安全。在代码中拼凑SQL语句,稍有不慎就会导致SQL注入。而在存储过程可对输入参数再次过滤,基本上可以防止不合法的参数。
  当然,每个项目不一样,怎么用数据访问,都需要认真分析每个项目的具体情况后再做决定。

posted on 2008-06-02 08:53 Sunshine 阅读(319) 评论(1) 编辑 收藏

评论

#1楼 2008-12-08 11:16 1-2-3      
做个小小的补充:
写在存储过程里面,将来需要数据库重构时会比较方便。例如要删除Person表的State字段,而Project、Contract等等10余个表里面都有名为State的字段。如果在代码里面查找、替换的话相当的闹心,很容易出错。如果写在了存储过程里面,利用SQL Prompt这个插件的数据库重构功能就能轻而易举地定位到所有使用了Person.State的存储过程了。
 回复 引用 查看