日期:2014-05-17  浏览次数:20622 次

关于ASP.net操作数据库的问题
打开关闭数据库的方法:

方式1:
我看很多朋友写的程序,一个操作就“打开”、“关闭”一次数据库,如果一个页面有10个关于数据库的操作,那么就打开关闭10次数据库;

方式2:
我通常用的方法是一个页面打开关闭只一次,在页面最前打开,在页面加载完毕关闭;

可是最近我发现,很多朋友都使用方式1,请问下这种处理方式很好吗?好在什么地方呢?
另外,请问SQL链接串要如何写才是效率最高的?

------解决方案--------------------
去baidu下数据库连接池你就清楚了,每次你连完数据库后,一般都需将资源交回到连接池的,所以一般都是方式1
------解决方案--------------------
第一种最好。

打开关闭数据库连接体现,声明即用,用毕即销的原则。

持续打开数据库在编程的时候,会发现麻烦事巨多。

如果故障的时候你怎么关闭链接?写个长长的try,一看就知道是菜鸟写的代码。

如果一个页面里面有N次执行数据库,总不能都是 insert 、update 、delete 吧,万一你要用DataReader呢??

如果页面加载完毕才关闭没必要,造成没必要的事务锁定数据库表,造成性能低下。
 
------解决方案--------------------
打开 和关闭数据库,处理的最好都是业务逻辑所需要的
------解决方案--------------------
探讨
方式1:
我看很多朋友写的程序,一个操作就“打开”、“关闭”一次数据库,如果一个页面有10个关于数据库的操作,那么就打开关闭10次数据库;

------解决方案--------------------
asp.net的页面处理时多线程的。并且即使是你自己写的一个顺序执行的小程序,在访问数据库的流程中也经常会因为DbDataReader等占用数据库逻辑连接而需要另外打开其它的逻辑连接来让其它的数据库查询同时顺序工作。

使用sql server的ado.net驱动,那么当然需要“打开、关闭”连接。这使用了面向对象封装的概念,你无需纠结于底层是如何复用数据库物理连接的,你只需要操作数据库逻辑连接,并且只有及时释放逻辑连接才能让物理连接及时复用给其它操作。

因此“方式1”才能保证连接池高效运转。而你的方案2反而是画蛇添足地,根本用不到连接池技术(实际上你的程序也根本经不起多用户环境下的测试)。
------解决方案--------------------
方式1:
我看很多朋友写的程序,一个操作就“打开”、“关闭”一次数据库,如果一个页面有10个关于数据库的操作,那么就打开关闭10次数据库;

方式2:
我通常用的方法是一个页面打开关闭只一次,在页面最前打开,在页面加载完毕关闭;



在程序设计中这两种都可以我认为
第二种方式效率会高过第一种方法,关键在于代码的设计。不过要注意的是用到事务的要特殊处理连接和关闭。

第一种是方便调用。在于方法的封装。

------解决方案--------------------
所谓打开关闭 不是打开关闭数据库连接 而是把连接取出和放入连接池
资源明显第一种的利用率高得多 有什么好想的 

先学明白到底是什么再问那种好……
------解决方案--------------------
看项目需求如果要非常高的性能。一个存储过程查出三个结果集。我个人感觉这样性能最高
------解决方案--------------------
通用用
DATASET.TABLES[0]
DATASET.TABLES[1]
DATASET.TABLES[2]
获取
------解决方案--------------------
第一种最好,上面那么多解释,俺就不重复了。
------解决方案--------------------
没有必要争来争去。我有时候用第1种,也时候用第2种。只不过第1种情况用得多,看具体应用而定。
最重要的就是使用了资源,最后要释放资源!