ホームページ >データベース >mysql チュートリアル >C# コードが挿入された行 ID に対して常に 0 を返すのはなぜですか?

C# コードが挿入された行 ID に対して常に 0 を返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 13:47:02673ブラウズ

Why Does My C# Code Always Return 0 for the Inserted Row ID?

C# で挿入された行 ID を効果的に取得する

データベース操作を行う場合、挿入された行の一意の識別子を取得することが重要です。これは、コードの次のセグメントを作成するときに特に当てはまります。ただし、実際の ID がゼロ以外の値を持っているにもかかわらず、一貫して 0 という戻り値が返されると、イライラすることがあります。

直面している問題を詳しく調べてみましょう。提供された C# コードは、挿入された行の ID を取得しようとしますが、常に 0 を返します。この動作は、コードの実行における見落としに起因します。

問題の核心は次の行内にあります。

int id = Convert.ToInt32(comm.ExecuteScalar());

ExecuteScalar メソッドは、実行されたクエリから単一の値を取得できますが、挿入された行の ID を自動的に返すわけではないことに注意することが重要です。この問題は、Convert.ToInt32 を使用して戻り値を int にキャストしようとすると発生します。このキャストにより誤った変換が発生し、0 が返される可能性があります。

この状況を修正するには、ExecuteScalar を ExecuteNonQuery に置き換える必要があります。この関数は、挿入操作などの非クエリ ステートメントの実行を担当します。 insert ステートメントが正常に実行された後、MySqlCommand オブジェクトの LastInsertedId プロパティを利用して、新しく作成された行の ID を取得できます。

MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertStatement;
comm.ExecuteNonQuery();
long id = comm.LastInsertedId;

この調整を実装することで、効率的に行の ID を取得できます。挿入された行を削除し、コード実行の次のフェーズへのシームレスな移行を保証します。

以上がC# コードが挿入された行 ID に対して常に 0 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。