.NET Framework 4.5 で SqlDataReaderから@@IDENTITYの値を読み取れないことがあります。
例
SqlConnection con = new SqlConnection("(SQL接続文字列)");
con.Open();
try{
SqlCommand com = new SqlCommand(
"insert into products (name, price) values('Cookie',240); select insert_id = @@IDENTITY");
SqlDataReader sdr = com.ExecureReader();
if (sdr.Read() == true){
int insertID = (int)sdr["insert_id"]; /* この行で sdt["insert_id"]がNULLになる */
}
}
finally{
con.Close();
}
上記コードで、insertIDが取得できるはずが.NET Framework 4.5ではNULLになってしまいます。
対策
ターゲットフレームワークを .NET Framework 4.0に変更すると正しく動作します。
原因
不明
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-07
作成日: 2012-09-03