Connection类的Open,Close问题

iflyer 2006-07-15 02:07:18
问题1:开发C# C/S结构数据库程序时,类似新增、删除可以只使用Connection、Command对象搞定。Connection对象的Open,Close的时机有两个方案:一是在窗体的Load事件中调用Connection的Open方法,窗体Closed(或Closing)事件中调用Connection的Close方法,在新增、删除按钮的Click事件中调用Command对象的类似于ExecuteNonQuery方法执行新增、删除命令;第二种是在新增、删除按钮的Click事件中依次调用Connection的Open方法,Command的类似于ExecuteNonQuery方法,Connection的Close方法。这两种方案哪种合理?

问题2:SqlDataAdapter对象调用Fill、Update方法时,也不用调用相应Connection对象的Open、Close方法,为什么?

谢谢!
...全文
536 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
diandian82 2006-07-17
  • 打赏
  • 举报
回复
再fill的时候,如果原来是close,则先open -> fill -> close
viena 2006-07-17
  • 打赏
  • 举报
回复
如果是两层,客户端直接连接数据库,可以用一个全局连接对象,在程序运行期间保持打开

如果是三层,中间层处理数据访问的话,类似B/S结构的,
就要在过程内定义连接对象,用完及时关闭,close方法使其释放到连接池,
下次打开从连接池区,并不会损失性能
iflyer 2006-07-17
  • 打赏
  • 举报
回复
结贴!
vfan2010 2006-07-17
  • 打赏
  • 举报
回复
什么时候用数据库什么时候open,用完就close
iflyer 2006-07-17
  • 打赏
  • 举报
回复
谢谢各位,几万睡觉前(23点)结贴
wwh999 2006-07-16
  • 打赏
  • 举报
回复
不过我一般都是用第一个方案的,但要注意在打开Connection时的打开类型和锁类型。这一点很重要。

关于你的第二个问题:
问题2:SqlDataAdapter对象调用Fill、Update方法时,也不用调用相应Connection对象的Open、Close方法,为什么?
--------------------------------------------------------------
如果你已经声明了一个高级别的Connection对象,如窗体级的,那么它就在整个窗体中可见,如果你在Load时已经使用了Open方法打开了,那么它就一直都存在,好么在这个窗体范围内的操作,都不需重新打开。直接向这个Connection发送CommandText就可以使用了...

我所说的第一个方案的好处,也即是有这个意思!
wwh999 2006-07-16
  • 打赏
  • 举报
回复
1>中第一个方案的Connection在窗体启动就打开,后面的新增,删除是在这Connection之上直接发送Command命令。而且这个Con
nection在这里肯定是一个至少窗体级的全局Connection.
第二个方案中的,是即时生成的connection,也即时只有在操作数据(新增/删除)时才会产生,随这个过程结束而结事。它是一个过程级的变量。....即时性..

如果你的窗体中要涉及很多功能都要使用这个Connection,那么肯定是使用前者较好,只需要在Form_Load中初始化Connection,那么在这个窗体中的所有过程(添加/删除....)都可以直接使用,并发送Command命令等等...

由于是并多的多客户端,那么如果你的窗体中仅就一两个功能,可以使用第二个方案,以便节省网络Connection数量。
zhangzhen7935 2006-07-16
  • 打赏
  • 举报
回复
1 楼上的楼上说的比较好
2 Fill的时候自动处理open and close
kssys 2006-07-15
  • 打赏
  • 举报
回复
1.在使用C/S开发的时候,一般一个程序只要一个连接就可以了。这个连接可以设成static,或者有一个数据操作类。
2.Fill前,如果连接没有打开,会自动打开。Fill后,如果调用Fill前,连接是打开的,那么就一直保持打开。如果之前是关闭的,那么会关闭连接。
alien54155415 2006-07-15
  • 打赏
  • 举报
回复
1.当然第二种,否则一个client起来就占一个连接
2.Fill会自动先open,最后close
总之,数据库连接这种资源,只有使用的时候才打开,用完就关掉。
江城老温 2006-07-15
  • 打赏
  • 举报
回复
1.个人而言,基本都是使用第二种方法.
2.update时数据库肯定是打开状态啊.

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧