码迷,mamicode.com
首页 > 其他好文 > 详细

关于"作数类型冲突: nvarchar 与 image 不兼容"的问题

时间:2016-04-29 11:51:28      阅读:1063      评论:0      收藏:0      [点我收藏+]

标签:

数据库如果是Image类型,当执行插入语句时,如果插入的值是DBNull.Value时提示:操作数类型冲突: nvarchar 与 image 不兼容;

出现这个问题的原因是没有指定DbType的原因。大部分情况下,使用 SqlParameter的时候不需要指定参数的数据类型(DbType或者SqlDbType),ADO.Net会根据value的类型来自动判断出数 据类型,即使ADO.Net不能判断出来,SQLServer数据库服务器也能进行大部分的判断(当然会损失一些性能)。
但是对于这个程序中的Image类型就没那么幸运了,如果不指定DbType,而恰好数据又为Null/DbNull的时候,ado.net就把数据类型识别成为了nvarchar,就出现了上面的错误了。因此只要指定DbType或者SqlDbType即可。

//new SqlParameter("@Photo", SqlHelp.ToDBNull(employee.Photo)

new SqlParameter("@Photo", SqlDbType.Image) {Value=SqlHelp.ToDBNull(employee.Photo) }

所以当用上面的SqlParameter时,肯定会报错,用下面的SqlParameter,因为我们指定了SqlDbType类型为Image,这个错误就不会在出现。

 

本文参考了网址:http://bbs.itcast.cn/thread-11263-1-1.html

关于"作数类型冲突: nvarchar 与 image 不兼容"的问题

标签:

原文地址:http://www.cnblogs.com/sxw117886/p/5445523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!