我正在开发一个Windows Mobile WinForm应用程序,它使用带有.NET Compact Framework 2.0 SP2和C#的Sql Server CE 3.1。
我有一个具有SqlCeConnection对象的表单,在所有执行时间内打开:我在启动时打开连接并在事件结束时关闭它。
我还有一个类来读取Sql Server CE数据库。
我的问题是关于表现:这两种情况中哪一种最好?
1。当我创建一个reader类的对象时,将SqlCeConnection对象传递给构造函数并将其作为属性保存到这个新对象中。
2。总是,当我调用此reader类的方法时,将SqlCeConnection对象作为参数传递。
我认为如果我使用情境1,我有两个SqlCeConnection对象,不是吗?
如果您需要更多详情,请告诉我。
谢谢!
答案 0 :(得分:1)
首先回答你的上一个问题,在场景1中你不会有两个不同的连接。你传入的SqlCeConnection是一个引用,因此表单和reader类都引用了相同的底层连接对象
我实际上并不认为这两种情况存在很大差异。由于您在表单的生命周期中保持连接打开,因此如果您在此辅助类的构造函数或每个方法中传递它,则无关紧要。所以我想只是做方案1会更容易,因为每个调用的参数列表都会更小。
如果您尝试最小化连接的生命周期,这将很重要。例如,在连接到普通SQL Server的Windows桌面应用程序中,您实际上不希望在表单的生命周期中保持打开的连接,因为如果很多人打开了大量表单,那么就会遇到性能问题。你的服务器。因此,在这种情况下,您将在最后一秒创建连接,将其传递到您的阅读器例程以获取数据并立即关闭它。在这种情况下,情景2会更好。
但在移动应用程序中,这种情况对您来说似乎并不重要。您可能是唯一一个连接到数据库的人,因此如果您打开连接并不重要。