我刚学着用C#数据库编程.数据库中每个窗口都要打开数据库连接(sqlserver),然后每个窗体中的除form_load外,一些查询\保存等事件也要打开数据库连接进行操作.
我想,如果一开始就把数据库打开设为全局的,然后只要上面建立sqlCommand之类的进行操作是方便很多;但连接总是打开的话又会占去内存;
所以请问有经验的专家,这个连接是每个过程再打开\还是窗体级或是全局级变量最为适合?
我想,如果一开始就把数据库打开设为全局的,然后只要上面建立sqlCommand之类的进行操作是方便很多;但连接总是打开的话又会占去内存;
所以请问有经验的专家,这个连接是每个过程再打开\还是窗体级或是全局级变量最为适合?
我的建议是需要连接数据库时就创建connection,用完之后就把connection close掉, 不要担心频繁开关connection会影响性能,ADO.NET 数据库连接池会为你维护连接.这样做了你还是觉得你的代码不够美的话,你就有分层的需求了。
conn.Close()就自动会conn.Dispose,两者是一样的,释放占用的内存资源
对于一个数据库可用的连接是有限的,在VB时代,由于并发用户很少,需要的连接也不多就出现了lz提到的这种用法,一个程序保持一个连接不断,一直使用它,但随着用户量的增大,这种做法已经被抛弃,因为如果有几百并发用户的话,数据库就吃不消了。 ADO.net的推出就是为了让开发人员习惯连接用完就close的做法。 连接池的概念也在这时显得很重要了,不过对于开发人员连接池是透明的,默认情况下就会使用连接池的。所以,lz还是老老实实的使用局部变量,使用完及时关闭,这是推荐的用法。