これは有名な話題の1つですが、あなたの知識、意見、現在の習慣に基づいて、次のシナリオを設定する最善の方法は何ですか?C#データ接続のベストプラクティス?
私は広範なデータ入力アプリケーションを構築しています。広範囲に渡って、私はプログラム全体の約15〜25%を組み込んでいる基本設定しか持っていないということです。 (彼らはまだ仕事が必要です)私はバックエンドデータベースとしてSQL Compact 4.0を使用しています。私はMMOの価値のあるデータを格納していないので、実際にはより広範なデータベースは必要ありません。 。
私はメニューシステムに基づいていろいろなページに変わる単一のウィンドウとして表示するように設定したいと思っていますが、どのようになるかについての良いチュートリアルを見つけることはできません誰もが知っているなら、私を啓発してください。
ただし、問題のシナリオは、データベースに接続する方法です。私は2つのSQLCEデータベースを使用しています.1つはサービスとスタッフに基づく定数データを格納し、もう1つは常に変化するデータまたは最初のデータベースに基づいて入力された新しいデータを格納します。私はこれを設定する方法について多くの異なるメソッドを見てきましたが、現在私は他のすべてのフォームが継承する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);
}
}
それから私は単に私がへのアクセスを必要とするデータベースに対応オープン接続メソッドを呼び出した後、最終的には声明の中で、それを閉じます。このようにして、接続が必要なときに、非常に長く開いてしまうことはありません。もちろんこれは、オープンな接続方法の呼び出しがたくさんあることを意味します。これは、この種のシナリオを実装する最善の方法ですか、より良い方法がありますか?
フォームがロードされるとすぐに接続を開いて、フォームが閉じたときに接続を閉じるほうがよいでしょうか?私は一度に複数のフォームが開いているインスタンスを持っており、それぞれがデータベースとのオープンな接続を必要としている可能性があるので、もしそれを閉じると他のフォームは正しくねじ込まれるでしょうか?または、アプリケーションの起動時に両方のデータベースへの接続を開く必要がありますか?どんな入力も感謝します。ありがとう。
Using the Statement http://stackoverflow.com/q/212198/1193596 – Amicable