目次

.NET Framework 4.5 で SqlDataReaderから@@IDENTITYの値を読み取れないことがある

.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
iPentec all rights reserverd.