在用ado.net访问数据库的时候,你可以把sql语句直接作为cmd参数,
也可以把sql语句保存成存储过程存在数据库中,然后用cmd调用这个存储过程的名字,两个方法都行
但是我不明白,这两个方法的利弊.
还有如果是把SQL语句写在程序中,那么将来我发布程序以后,感觉要修改SQL语句,那么我就直接在程序中修个
让后将修改好的C#程序发布就好了,那如果我是写成存储过程保存在数据库中,那要如何更新?

解决方案 »

  1.   

    在用ado.net访问数据库的时候,你可以把sql语句直接作为cmd参数, 
    也可以把sql语句保存成存储过程存在数据库中,然后用cmd调用这个存储过程的名字,两个方法都行 
    但是我不明白,这两个方法的利弊. 答:前面两个效率上基本一样的,你写成了存储过程,要按存储过程调用,需要指定sql是存储过程,否则就是sql,效率前者要高很多。这个上周五正好做了个测试,测到这个区别了。还有如果是把SQL语句写在程序中,那么将来我发布程序以后,感觉要修改SQL语句,那么我就直接在程序中修个 
    让后将修改好的C#程序发布就好了,那如果我是写成存储过程保存在数据库中,那要如何更新?答:把sql写在程序代码里的做法不推荐,修改一个sql语句导致要发布整个程序,这是很危险的,也很烂,但去修改一个存储过程,风险就小多了。而且发布起来也简单,不需要停止程序,只需把对应的存储过程alter就 可以了。
      

  2.   

    用存储过程的好,要修改sql语句时,如果sql语句写在程序里,就得改程序,得重新编译.如果采用存储过程,则只要修改对应的存储过程即可.
    在数据访问量大,而且访问次数多时,使用存储过程还有速度上的优势.
    存储过程较一般的sql语句还有安全上的优势等等.
      

  3.   

    楼主提问很实在,像我,呵呵。
    用存储过程确实有很多事情需要处理,比如你得改数据库,如果用户已经使用了,
    如果你不直接操作数据库,只能用覆盖的方法,那么用存储过程是很麻烦的。
    由于我写的程序,一般是业务逻辑复杂,很多时候不用存储过程无法实现,
    所以不得不用,一般的增删改查,直接用sql语句就行了,注意用参数形式的,
    防止注入。
      

  4.   

    小东西直接写也没什么,这样快如果公司人力足够,可以用存储过程不过现在很多框架都是把SQL语句写在外面的配置文件里面,也未必要用存储过程,
      

  5.   

    我用的就全是存储过程,没用SQL,哪怕sql句语我也保存在存储过程中
    我还是觉得存储过程好些,像有的要动态拼条件的直接传一个参数就行了,也方便的
      

  6.   

    用存储过程好 ,因为它已经预编译过了。程序不用再检查它的语法有没有错误。执行比SQL语句快。
    但就像楼上说的,多了的话会很麻烦。
    所以还得看具体情况而定。LZ 你认为呢?
      

  7.   

    肯定是要看具体的需求了,一般情况下一条SQL语句不能完成功能的用存储过程,经常用到的SQL语句用存储过程(比如验证用户身份的等).其他的SQL