私はまったく新しい SQL/データベース アプリケーションで、Visual Studio 2015 C# を使用して簡単な連絡先管理アプリケーションを試しています。「SQL Express LocalDB」を使用しています。私はGoogleで開発目的であると読んだことがありますが、Microsoftは生産目的にも使用できると述べています.
私の問題は、開発システムからアプリケーションを試してみると、最初はアプリケーションのロードに数秒かかりますが、その後はすべてのクエリがすばやく実行されることです。友人のシステムでこれを試したところ、クエリを使用しようとするたびに時間がかかりました。データベースには 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();
Q. アプリの実行中は常に接続を開いたままにしておく必要がありますか? これは提案すべきではないと思います。アプリがクラッシュしたかのように、データベースが破損する可能性があります。
LocalDBが新しいミリ秒ごとに接続を閉じるとpplが言っている背景の1つ。では、データベースに対して数ミリ秒ごとに ping を実行し続ける必要がありますか? または、本番環境で localdb をまったく使用しないでください。
データベースの前提条件に関して、要件が非常に低くなるようにアプリを作成したいと考えています。LocalDB と同様に、インストールは本当にシームレスです。
SQL Server Express を使用したことがありません。Express のインストールも LocalDB のようにシームレスですか? Express でも LocalDB のような接続文字列を使用して、.mdf ファイル名を直接指定できますか?