我是全新的 sql/数据库应用程序,正在尝试使用 Visual Studio 2015 C# 的简单联系人管理应用程序。我正在使用“SQL Express LocalDB”。我在谷歌上读到它是为了开发目的,但微软也提到它也可以用于生产目的。
我的问题是,当我从我的开发系统中试用应用程序时,应用程序第一次加载需要几秒钟,但之后每个查询都会快速运行。当我在我的朋友系统上尝试此操作时,每次尝试使用任何查询都需要时间。该数据库只有 20-30 条记录。
我使用“new SqlConnection”创建新连接,然后执行“new SqlCommand”创建的命令,并在执行查询后关闭连接。
这是我的应用程序中的代码片段
SqlConnection sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = ""C:\ContactsDB.mdf""; Integrated Security = True; Connect Timeout = 30";);
SqlCommand sqlCmd = new SqlCommand();
sqlCmd.Connection = sqlConnection;
sqlCmd.CommandText = "SELECT Id, first_name, last_name from ContactsMaster ORDER BY first_name";
sqlConnection.Open();
SqlDataReader reader = sqlCmd.ExecuteReader();
try
{
while (reader.Read())
{
ListViewItem lvi = new ListViewItem(reader["first_name"]);
listViewItems.Add(lvi);
lvi.SubItems.Add(reader[0].ToString());
}
}
finally
{
reader.Close();
}
sqlConnection.Close();
问:我应该在应用程序运行时一直保持连接打开吗?我认为这不应该被建议。好像应用程序崩溃数据库可能会损坏。
人们说LocalDB每隔新毫秒关闭连接的背景之一。那么我应该每隔几毫秒就对数据库进行一次 ping 操作吗?或者我根本不应该在生产中使用 localdb?
我想让应用程序对数据库先决条件的要求非常低。像 LocalDB 安装真的是无缝的。
我没有使用 SQL Server Express,Express 安装是否也像 LocalDB 一样无缝,我也可以在 Express 中使用类似 LocalDB 的连接字符串,直接给出 .mdf 文件名吗?