日期:2014-05-17  浏览次数:21110 次

SqlParameter("@Photo",DBNull.Value)存储到数据库Image提示nvarchar与image数据类型不匹配??
本帖最后由 hhsmelody 于 2013-03-14 15:11:58 编辑
SqlParameter("@Photo",DBNull.Value)存储到数据库Image提示nvarchar与image数据类型不匹配??
Employee()为Model,即Photo为表Employee中的一个字段
byte[] photo{get;set;}
Employee emp=new Employee();
if(photo==null)
{
return DBNull.Value;
}
else
{
return photo;
}
emp.Photo=photo;
ExecuteNonQuery("insert into Employee(Photo) values(@Photo)",new SqlParameter("@Photo",emp.Photo));
当执行插入语句,emp.Photo的值为DBNull.Value时提示:操作数类型冲突: nvarchar 与 image 不兼容;
emp.Photo的值不为空时,成功,求解?????????
数据库中Photo所对应字段为Image类型,C#中定义photo为byte[];
C# SqlParameter DBNull Image byte

------解决方案--------------------

SqlParameter param=new SqlParameter("@Photo")",emp.Photo==DBNull.Value ?  null:emp.Photo);
param.SqlDbType = SqlDbType.Image;

ExecuteNonQuery("insert into Employee(Photo) values(@Photo)",param);
------解决方案--------------------
photo为byte[] 为null的时候,photo= new byte[0]

这样的话,往数据库保存的时候,就不会有异常
------解决方案--------------------
SqlParameter("@Photo",SqlDbType.Image);什么都不要写就是null