日期:2014-05-18  浏览次数:20999 次

为了提高效率,SqlConnection对象一般是用全局变量\窗体级变量还是局部变量 ?
我刚学着用C#数据库编程.数据库中每个窗口都要打开数据库连接(sqlserver),然后每个窗体中的除form_load外,一些查询\保存等事件也要打开数据库连接进行操作.
我想,如果一开始就把数据库打开设为全局的,然后只要上面建立sqlCommand之类的进行操作是方便很多;但连接总是打开的话又会占去内存;
所以请问有经验的专家,这个连接是每个过程再打开\还是窗体级或是全局级变量最为适合?

------解决方案--------------------
可以建立一个静态的类,用这个类来访问数据库,在类里定义一个全局数据连接,在每个方法里判断是否打开了连接,如未打开则打开,如果打开就直接使用。
------解决方案--------------------
使用SqlHelper.cs吧,唉
------解决方案--------------------
可以把数据库操作都放到一个类里面,但是不建议用一个静态的Connection, 这样并发情况下的同步和性能会有问题。
我的建议是需要连接数据库时就创建connection,用完之后就把connection close掉, 不要担心频繁开关connection会影响性能,ADO.NET 数据库连接池会为你维护连接.

这样做了你还是觉得你的代码不够美的话,你就有分层的需求了。
------解决方案--------------------
已经有个写好的DBHelper类 里面基本是囊括了所有sql server的操作 是个静态类 每次想用啥方法直接DBHelper.方法名就出来了 连接都写好了 只需要改下你所用的数据库名字就可以了 你上摆渡搜索下 然后在项目里新建个类,把代码拷进去就行了