2012-03-07 19 views

答えて

9

を参照してください:

int affectedRows = command.ExecuteNonQuery(); 
if (affectedRows <= 0) 
{ 
    // Houston, we have a problem. 
} 

あなたがデータにトリガを持っている場合、それはあなたがINSERTにしようとした行の実際の数反映していない可能性に注意してください:

ExecuteNonQueryを使用して任意のタイプのデータベース操作を実行できますが、返される結果セットは使用できません。ストアドプロシージャを呼び出す際に使用される出力パラメータには、データが設定され、実行が完了した後で取得できます。 UPDATEINSERT、およびDELETEステートメントの場合、戻り値はコマンドの影響を受ける行の数です。他のすべてのタイプのステートメントの場合、戻り値は-1です。

ただし、クエリでエラーが発生した場合は、通常、MySqlExceptionが届きます。

+0

sixlettervariablesありがとう! – dotancohen

2

失敗した場合は例外がスローされます。例外オブジェクトには、通常、何がうまくいかなかったかに関する情報(たとえば、「主キー違反」など)が含まれます。

また、INSERT、UPDATEまたはDELETEにはExecuteNonQueryを使用してください。返される値には、影響を受ける行の数が格納されます。

+0

ありがとう、ブランコ。 – dotancohen

3

データベースを照会するときだけSqlDataReaderを使用し、SqlDataReaderは早送り専用のポインタなので、クエリのみを推奨します.SqlCommandのExecuteNonQuery()メソッドを次のコードとして使用します:

using (SqlConnection conn = new SqlConnection("[QueryString]")) { 
      using (SqlCommand cmd = new SqlCommand("SQL Command",conn)) { 
       //here you return the number of affected rows 
       int a = cmd.ExecuteNonQuery();      
      } 
     } 

私はこれがあなたを助けることを願っています。

関連する問題