クエリでSQL ServerのOUTPUT
clauseを使用してみてください - それだけで挿入された値のいずれかを返すことができます(ここで私はあなたの列がID
呼ばれると仮定しています - 必要に応じて適応):
objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO Moin(Title, TotalID, Code) " +
"OUTPUT Inserted.ID " +
"VALUES (@Title , @TotalID, @Code); "
し、このようにそれを実行します。あなただけの1行1列(ちょうどINT)を返すしているので、あなたが取得するために.ExecuteScalar()
を使用することができます
int result = (int)objCommand.ExecuteScalar();
その値はINSERT
ステートメントから戻ってきます。
句OUTPUT
句を使用すると、挿入されたばかりの値を返すことができます。したがって、データベースによって満たされた値をデフォルト値または必要なもので戻すこともできます。複数の値を返す場合は、データリーダーを使用してすべてを読み取る必要があります。ExecuteScalar()
は、単一の値に対してのみ機能します。
しかし、Andersが正しく言及しているように、Entity FrameworkのようなORMを使用すると、自動的にこのすべてが処理されるため、未処理のSQLコマンドを処理する必要はありません。