好吧,这是一种固执己见的话题,但根据你的知识、观点和当前的实践,设置以下场景的最佳方法是什么?
我正在构建一个广泛的数据输入应用程序,我所说的广泛是指我只完成了基本设置,其中包含整个程序的大约 15-25%,并且我有大约 15 个部分设置的表单。 (他们仍然需要工作)我使用 SQL Compact 4.0 作为我的后端数据库,我并不真正需要更广泛的数据库,因为我没有存储 MMO 的数据价值,目前这只是一个本地应用程序。
我希望能够将其设置为显示为单个窗口,该窗口仅根据菜单系统更改为各种不同的页面,但我似乎找不到关于如何完成此操作的好教程,所以如果有哪位知道的,请赐教。
然而,所讨论的场景是如何连接到数据库。我使用 2 个 SQLCE 数据库,一个存储基于服务和人员的恒定数据,第二个存储不断变化的数据或基于第一个数据库输入的新数据。我已经看到了许多不同的方法来设置它,目前我正在使用一种方法,其中我有一个所有其他表单都继承自的 BaseForm。在 BaseForm 中,我拥有许多表单通用的方法和变量,从而最大限度地减少了重复的代码量。
这包括两个数据库的连接字符串,以及打开与其中任何一个数据库的连接的 2 个方法。就像这样:
internal SqlCeConnection dataConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_data.sdf");
internal SqlCeConnection logConn = new SqlCeConnection(@"Data Source = |DataDirectory|\opi_logs.sdf");
internal SqlCeCommand command;
internal void openDataConnection() // Opens a connection to the data tables
{
try
{
if(dataConn.State == ConnectionState.Closed)
dataConn.Open();
}
catch(SqlCeException ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
internal void openLogConnection() // Opens a connection to the log tables
{
try
{
if(logConn.State == ConnectionState.Closed)
logConn.Open();
}
catch (SqlCeException ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
然后,每当我需要打开连接时,我只需调用与我需要访问的数据库相对应的打开连接方法,然后在finally语句中将其关闭。通过这种方式,连接永远不会在需要时打开很长时间。当然,这意味着有很多对打开连接方法的调用。那么这是实现这种场景的最佳方法,还是有更好的方法?
表单加载后立即打开连接,然后在表单关闭时关闭连接是否更好?我有这样的情况,一次打开多个表单,每个表单可能都需要与数据库的开放连接,因此如果一个表单关闭,那么其他表单就会被搞砸,对吗?或者我应该在应用程序启动时打开与两个数据库的连接?任何意见将不胜感激。谢谢。