系统.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 ()
如果执行查询的结果为空(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