DBNull问题
数据库:
CREATE procedure UserIsExict
@Uid binary(30),
@UserName binary(30) output
as
select @UserName=UserName from AlbumLogin where Uid=@Uid
GO
程序:
SqlCommand cmd = new SqlCommand( "UserIsExict ",conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter( "@Uid ", SqlDbType.Binary, 30));
cmd.Parameters[ "@Uid "].Value = Encoding.UTF32.GetBytes(paraUid);
cmd.Parameters.Add(new SqlParameter( "@UserName ",SqlDbType.Binary,30));
cmd.Parameters[ "@UserName "].Direction = ParameterDirection.Output;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return Encoding.UTF32.GetString( ((byte[])cmd.Parameters[ "@UserName "].Value) );
错误:
无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”
------解决方案--------------------if(cmd.Parameters[ "@UserName "]!=DBNull.Value )
{
return Encoding.UTF32.GetString( ((byte[])cmd.Parameters[ "@UserName "].Value) );
}
else
{
return String.Empty;
}
------解决方案--------------------你的返回值是null,所以不能进行转换操作
------解决方案--------------------老大 你的上个帖子我不是给你回了么
------解决方案--------------------对返回值判断一下即可处理!
------解决方案--------------------對反回值處理一下
------解决方案--------------------if(Convert.IsDbNull(...))
{
}
------解决方案--------------------判断一下是不是dbnull不就可以了
------解决方案--------------------错误:
无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”
-------------------------
现在的年轻人啊!不知道仔细分析下.
------解决方案--------------------小镇姑娘她爹我还要再说下现在的年轻人啊,唉......
------解决方案--------------------说的就是为什么参数所获取的值为什么总DBNull,是吧?
------解决方案--------------------是不是可以用一下空属类型啊(泛型的应用)