我有一个像这样的插入存储过程
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强制转换为其他类型。如何捕获最后插入记录的值?
答案 0 :(得分:2)
在尝试转换值之前进行空检查。
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);
}
答案 1 :(得分:1)
嗯,显然我们可以假设pid.Value
等于DBNull.Value
且无法转换为int
您需要检查sp对数据库返回的内容。