try { using (SqlConnection sqlConnection = new SqlConnection(this.connctionString)) using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) using (SqlTransaction sqlTransaction = sqlConnection.BeginTransaction(System.Data.IsolationLevel.Serializable)) { sqlConnection.Open(); sqlCommand.Transaction = sqlTransaction; int ret = -1; sqlCommand.CommandText = "DELETE FROM T_Hoge WHERE Piyo = '" + piyo + "';"; ret = sqlCommand.ExecuteNonQuery(); sqlTransaction.Commit(); } catch (Exception e) { throw; }"操作が無効です。接続は閉じています。"とか言われちゃったんで http://msdn.microsoft.com/ja-jp/library/2k2hy99x%28v=vs.80%29.aspx を見てみるとBeginTransaction()の前にSqlConnection.Open()しとかなきゃいけなかった。 うっかりうっかり。 トランザクション周りはロックやら結構気を付けないといけないね。 まあマルチスレッドでのアトミック性みたいな話と大体同じだとは思うけども。
2012年6月6日水曜日
SqlConnection.BeginTransaction()でエラー
下記のようなコードを書いたら
sqlConnection.BeginTransaction()でInvalidOperationExceptionが発生。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿