次のINSERT
クエリが成功したかどうかを確認するにはどうすればよいですか?クエリが成功したかどうかを知る方法?
私はReader.Read()
を実行しようとしましたが、空の文字列だけが返されました。ありがとう。
次のINSERT
クエリが成功したかどうかを確認するにはどうすればよいですか?クエリが成功したかどうかを知る方法?
私はReader.Read()
を実行しようとしましたが、空の文字列だけが返されました。ありがとう。
INSERT、UPDATE、またはDELETEを実行する場合は、ExecuteReaderを使用しないでください。代わりにExecuteNonQueryを使用すると、影響を受ける行の数が返されます。
あなたが代わりにExecuteNonQuery
を使用http://dev.mysql.com/doc/refman/5.6/en/connector-net-tutorials-intro.html#connector-net-tutorials-sql-command
を参照してください:
int affectedRows = command.ExecuteNonQuery();
if (affectedRows <= 0)
{
// Houston, we have a problem.
}
あなたがデータにトリガを持っている場合、それはあなたがINSERT
にしようとした行の実際の数反映していない可能性に注意してください:
ExecuteNonQuery
を使用して任意のタイプのデータベース操作を実行できますが、返される結果セットは使用できません。ストアドプロシージャを呼び出す際に使用される出力パラメータには、データが設定され、実行が完了した後で取得できます。UPDATE
、INSERT
、およびDELETE
ステートメントの場合、戻り値はコマンドの影響を受ける行の数です。他のすべてのタイプのステートメントの場合、戻り値は-1
です。
ただし、クエリでエラーが発生した場合は、通常、MySqlException
が届きます。
sixlettervariablesありがとう! – dotancohen
失敗した場合は例外がスローされます。例外オブジェクトには、通常、何がうまくいかなかったかに関する情報(たとえば、「主キー違反」など)が含まれます。
また、INSERT、UPDATEまたはDELETEにはExecuteNonQuery
を使用してください。返される値には、影響を受ける行の数が格納されます。
ありがとう、ブランコ。 – dotancohen
データベースを照会するときだけ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();
}
}
私はこれがあなたを助けることを願っています。
ありがとう、これは私が必要とするように見えます! – dotancohen