我是全新的sql /数据库应用程序,我正在尝试使用Visual Studio 2015 C#进行简单的联系人管理应用程序。我正在使用SQL Express LocalDB'。我在谷歌上看到它是出于开发目的,但微软也提到它也可以用于生产目的。
我的问题是,当我从开发系统中试用应用程序时,应用程序第一次加载需要几秒钟,但之后每个查询都会快速运行。当我在我的朋友系统上尝试这个时,每次尝试使用任何查询时都需要时间。该数据库只有20-30条记录。
我使用' new SqlConnection'创建新连接。然后执行由新的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();
Q值。应用程序运行时,我应该始终保持连接打开吗?我不认为这应该被建议。好像app crashes数据库可能会损坏。
ppl表示LocalDB每隔新毫秒关闭一次连接的背景之一。我应该每隔几毫秒对数据库进行一次ping操作吗?或者我根本不应该在生产中使用localdb?
我想让应用程序使得数据库先决条件的要求非常低。像LocalDB一样,安装真的是无缝的。
我没有使用SQL Server Express,Express安装是否也像LocalDB一样无缝,我是否可以在Express中使用类似LocalDB的连接字符串,直接提供.mdf文件名?
答案 0 :(得分:0)
ddbb性能需要考虑很多事情,这不是一个简单的问题。对于如此少量的记录,不应该存在性能问题。尝试将ddbb文件存储在与OS磁盘不同的另一个磁盘中,甚至更好,将数据文件和日志文件也放在不同的磁盘中。 关于您的问题,必须始终关闭连接并将其正确放置在finally块或使用块内。 Sql Express非常易于安装,并且还使用连接字符串,这是它可以在整个网络中使用的最大区别。
答案 1 :(得分:0)
最后转移到SQLite,与SQLLocalDB相比,速度更快。
答案 2 :(得分:0)
localdb具有自动关闭。默认值为5分钟。您可以将其设置为更高的值(即:12小时)。 最多是65535分钟。
请参阅:How to prevent SQL Server LocalDB auto shutdown?
如果我没记错的话,sqlexpress自动关机也要1个小时。
我的电脑上的症状:
第一次打开速度慢10到30秒。如果我在不到1秒后立即重新打开应用程序。如果我等一会又很慢