1

データベースを閉じるには、これを使用します: SqlConnection.Close(); しかし、私のアプリケーションはこの方法で立ち往生しています...

データベースにアクセスするたびに、これを行います:

string cmdSQL = "select min(shortAddress) from FreeShortAddress";

using (SqlCeCommand cmd = new SqlCeCommand(cmdSQL))    
{
    cmd.Connection = (SqlCeConnection)this.SqlConnection;    
    var r = cmd.ExecuteScalar();    
}

それは正しい方法ですか?どの接続 (どのテーブルで) がブロックされているかをどのように確認できますか?

ありがとうございました。

[編集]スタックせずにすべての接続を強制的に閉じるコマンドを知っていますか?

4

3 に答える 3

2

接続を開閉するときに私が使用する一般的なパターンは次のとおりです。(using ステートメントを終了する場合)

using (SqlConnection connection = new SqlConnection(connectionString)) 
{    
  int employeeID = findEmployeeID();    
  try    
  {

            connection.Open();
            SqlCommand command = new SqlCommand("UpdateEmployeeTable", connection);
            command.CommandType = CommandType.StoredProcedure;
            command.Parameters.Add(new SqlParameter("@EmployeeID", employeeID));
            command.CommandTimeout = 5;

            command.ExecuteNonQuery();    
   } 
   catch (Exception) 
   { 
      /*Handle error*/ 
   }

}
于 2012-12-27T16:47:49.283 に答える
1

これを使用してみてください:

using (SqlCeCommand cmd = new SqlCeCommand(cmdSQL))    
{
    cmd.Connection = (SqlCeConnection)this.SqlConnection;    
    var r = cmd.ExecuteScalar(CommandBehavior.CloseConnection);    
}
于 2012-12-27T17:23:56.833 に答える
0

これは実際に接続を閉じているときに行く方法です。trycatchステートメントを使用してコードが乱雑にならないように、どこでも実際に使用しました。ところで、バージョンでyieldキーワードを使用できます。しかし、trycatchではありません。:)

于 2012-12-27T17:00:08.537 に答える