在用ado.net访问数据库的时候,你可以把sql语句直接作为cmd参数,
也可以把sql语句保存成存储过程存在数据库中,然后用cmd调用这个存储过程的名字,两个方法都行
但是我不明白,这两个方法的利弊.
还有如果是把SQL语句写在程序中,那么将来我发布程序以后,感觉要修改SQL语句,那么我就直接在程序中修个
让后将修改好的C#程序发布就好了,那如果我是写成存储过程保存在数据库中,那要如何更新?
也可以把sql语句保存成存储过程存在数据库中,然后用cmd调用这个存储过程的名字,两个方法都行
但是我不明白,这两个方法的利弊.
还有如果是把SQL语句写在程序中,那么将来我发布程序以后,感觉要修改SQL语句,那么我就直接在程序中修个
让后将修改好的C#程序发布就好了,那如果我是写成存储过程保存在数据库中,那要如何更新?
也可以把sql语句保存成存储过程存在数据库中,然后用cmd调用这个存储过程的名字,两个方法都行
但是我不明白,这两个方法的利弊. 答:前面两个效率上基本一样的,你写成了存储过程,要按存储过程调用,需要指定sql是存储过程,否则就是sql,效率前者要高很多。这个上周五正好做了个测试,测到这个区别了。还有如果是把SQL语句写在程序中,那么将来我发布程序以后,感觉要修改SQL语句,那么我就直接在程序中修个
让后将修改好的C#程序发布就好了,那如果我是写成存储过程保存在数据库中,那要如何更新?答:把sql写在程序代码里的做法不推荐,修改一个sql语句导致要发布整个程序,这是很危险的,也很烂,但去修改一个存储过程,风险就小多了。而且发布起来也简单,不需要停止程序,只需把对应的存储过程alter就 可以了。
在数据访问量大,而且访问次数多时,使用存储过程还有速度上的优势.
存储过程较一般的sql语句还有安全上的优势等等.
用存储过程确实有很多事情需要处理,比如你得改数据库,如果用户已经使用了,
如果你不直接操作数据库,只能用覆盖的方法,那么用存储过程是很麻烦的。
由于我写的程序,一般是业务逻辑复杂,很多时候不用存储过程无法实现,
所以不得不用,一般的增删改查,直接用sql语句就行了,注意用参数形式的,
防止注入。
我还是觉得存储过程好些,像有的要动态拼条件的直接传一个参数就行了,也方便的
但就像楼上说的,多了的话会很麻烦。
所以还得看具体情况而定。LZ 你认为呢?