系统.InvalidCastException:无法强制转换类型为'的对象;键入'System.Strin

本文关键字:System Strin 对象 键入 类型 InvalidCastException 转换 系统 | 更新日期: 2023-09-27 18:04:44

我有这样的代码

SqlCommand objcmd1 = new SqlCommand("select r.login_Id from  XYZ where a.logonid  = @uId", myADONETConnection);
objcmd1.Parameters.Add("@uId", SqlDbType.VarChar).Value = dr[0].ToString();
returnUserId = (string)objcmd1.ExecuteScalar();
if (returnUserId != null)
{
    adid = returnUserId.ToString();
}
else
{
    adid = "";
}

我得到这个错误。我知道我得到NULL值作为返回值。我需要如何解决这个问题?有人能帮我一下吗?

System.Reflection。TargetInvocationException:异常已被调用的目标抛出。——>系统。InvalidCastException:无法强制转换系统类型的对象。
为"System.String"类型设置DBNull。在ST_a9849ab5e79d483093f9802cd30cb2e7.csproj.ScriptMain.Main ()

系统.InvalidCastException:无法强制转换类型为'的对象;键入'System.Strin

如果执行查询的结果为空(0行),ExecuteScalar返回null,如果尝试将其转换为字符串,您可能会得到空引用错误!

如果执行查询的结果实际上是NULL (NUll值在你的SQL db表列),ExecuteScalar将返回类型System.DBNull的结果,如果试图将其转换为字符串,你会得到这个错误。

在尝试强制类型转换(或对该对象执行任何其他操作)之前,请检查null

string returnUserId = string.Empty;
var result = objcmd1.ExecuteScalar();
if (result!= null)
{
   returnUserId = (string) result;
}

result!= null将返回false如果来自ExecuteScalar的结果是类型为System.DBNull