Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 接收对象不能强制转换为DBNULL错误_C#_Sql_Sql Server_Stored Procedures_Dbnull - Fatal编程技术网

C# 接收对象不能强制转换为DBNULL错误

C# 接收对象不能强制转换为DBNULL错误,c#,sql,sql-server,stored-procedures,dbnull,C#,Sql,Sql Server,Stored Procedures,Dbnull,在C#Windows窗体按钮上单击,我有一个SQL Server存储过程,用于根据客户的名字和姓氏参数返回客户ID。如果客户不存在,我将收到此错误 对象不能从DBNull强制转换为其他类型 我如何显示一条消息,显示客户未找到,而不是收到此错误 调用存储过程并将返回值存储为memberID的代码: SqlCommand IDFromName = new SqlCommand("MemberIDfromName", sc); IDFromName.Parameters.Add("@memberID"

在C#Windows窗体按钮上单击,我有一个SQL Server存储过程,用于根据客户的名字和姓氏参数返回客户ID。如果客户不存在,我将收到此错误

对象不能从DBNull强制转换为其他类型

我如何显示一条消息,显示客户未找到,而不是收到此错误

调用存储过程并将返回值存储为memberID的代码:

SqlCommand IDFromName = new SqlCommand("MemberIDfromName", sc);
IDFromName.Parameters.Add("@memberID", SqlDbType.Int).Direction = ParameterDirection.Output;
IDFromName.Parameters.Add("@firstName", SqlDbType.NVarChar).Value = txtFirst.Text;
IDFromName.Parameters.Add("@secondName", SqlDbType.NVarChar).Value = txtLast.Text;
IDFromName.CommandType = CommandType.StoredProcedure;

sc.Open();
IDFromName.ExecuteNonQuery();
sc.Close();

memberID = Convert.ToInt32(IDFromName.Parameters["@memberID"].Value);  
试试这个:

if (!DBNull.Value.Equals(IDFromName.Parameters["@memberID"].Value) 
{
//success Customer Found Do something
 -------------------------------------
}
else
{
MessageBox.Show("Customer Not Found!");
}

相关代码会很有帮助在您尝试强制转换如何显示消息之前检查值
是否为DBNull
?使用MessageBox这可能有你想要的答案->发布了一些代码,希望有用