0

このような挿入ストアドプロシージャがあります

  if exists(select EmailId from Profile_Master where EmailId=@EmailId)
set @result=-1
else
begin
set @result=0


 insert into Profile_Master(FirstName,LastName,Dob,Gender,MobileNo,Country,State,EmailId,Password)
 values 
(@FirstName,@LastName,@Dob,@Gender,@MobileNo,@Country,@State,@EmailId,@Password)
set @id=SCOPE_IDENTITY()
return
end 

 pid = cmd1.Parameters.Add("@id", SqlDbType.Int);
            pid.Direction = ParameterDirection.Output;
            cmd1.ExecuteNonQuery();
            int res = Convert.ToInt32(pid.Value);

最後に挿入されたレコードの値をキャッチしていますが、次のようなエラーが発生しています

オブジェクトを DBNull から他の型にキャストすることはできません。最後に挿入されたレコードの値を取得するにはどうすればよいですか?

4

2 に答える 2

2

値を変換する前に、null チェックを実行してください。

if( pid.Value is DBNull )
{
    // Do alternative route.
}
else
{
    int res = Convert.ToInt32(pid.Value);
}

また:

if( ! pid.Value is DBNull )
{
    int res = Convert.ToInt32(pid.Value);
}
于 2012-09-14T03:52:09.513 に答える
1

明らかに、pid.Valueは と等しくDBNull.Value、型に変換できないと仮定できます。int

sp の動作とデータベースから返される内容を確認する必要があります。

于 2012-09-14T03:49:09.453 に答える