日期:2014-05-18  浏览次数:20820 次

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,是吧?
------解决方案--------------------
是不是可以用一下空属类型啊(泛型的应用)