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 サイトの他の関連記事を参照してください。