0

私はWindows-CEプラットフォーム用のC#プログラムを開発しました。プログラムは、1回の操作ごとにデータベースへの接続を開いたり閉じたりします。以下のコードを参照してください。画面が閉じるまでデータベースに接続する方法は?

ボタンのクリック:

private void btnStkIn_Click(object sender, EventArgs e) 
{ 
    formStockIn = new frmStkIn(); 
    formStockIn.Show(); 
} 

[データ:

try 
{ 
    using (SqlConnection sqlConn = new SqlConnection(<connection-string>)) 
    { 
     sqlConn.Open(); 
     //Execute command 
     SqlCommand sqlCmd = new SqlCommand(<Select Query>, sqlConn); 
     SqlDataReader sqlReader = sqlCmd.ExecuteReader(); 

     while (sqlReader.Read()) 
     { 
      <Statement here> 
     } 
    } 
} 
catch 
{ 
    //SQL command error 
    itemDT.ErrorMessage = "Select process is failed.Please contact system admin."; 
    itemDT.Result = 12; 
} 

更新データ:

try 
{ 
    using (SqlConnection sqlConn = new SqlConnection(<connection-string>)) 
    { 
     sqlConn.Open(); 
     //Execute command 
     SqlCommand sqlCmd = new SqlCommand(<Update Query>, sqlConn); 
     if (sqlCmd.ExecuteNonQuery() <= 0) 
     { 
      //No row affect 
      return -99; 
     } 
     else 
     { 
      //Completed 
      return 0; 
     } 
    } 
} 
catch 
{ 
    //Sql command error 
    return 99; 
} 

私は(フォームがで示されたときに)一度データベースに接続したいと次に、同じ接続を使用してデータを選択、挿入、更新し、画面を閉じるときに接続を閉じます。実行時には、一部の画面で複数回の選択・更新が可能です。

どうすればよいですか?

+1

あなたのフォームが表示されているすべての時間開いている接続がなぜ必要なのかまだ分かりませんか? –

+0

@pranav、私はクラウド上のデータベースでプログラムをテストし、データベースで動作すると速度が遅くなります。それは普通ですか? –

+0

申し訳ありませんが、事故削除のコメントです。 –

答えて

2

あなたがしていることは問題ありません。可能な限り短い時間接続を開いたままにしておき、それを廃棄することをお勧めします。これはあなたがやっていることであり、それは良いことです。

これを開いたままにしておけば、ユーザーは昼食や休暇などで何もクリックせずに何もクリックしないと、正当な理由がないまま接続しています。

同時に複数のことを行う必要がある場合は、1つの接続を開き、クエリを実行してすぐに接続を閉じます。

+0

これはデータベースを操作するためのベストプラクティスです。 –

+0

@コーディングヨシありがとう。 –

+0

@MonkaweeManeewalaya組み込みの[接続プール](https://msdn.microsoft.com/en-us/library/8xx3tyca.aspx)も参照してください。 –

関連する問題