关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
来源:互联网 发布:gitbook mac客户端 编辑:程序博客网 时间:2024/05/19 16:33
有学生在看传智播客的免费“.Net人事管理系统开发”视频教程(http://net.itcast.cn/subject/rsgl/index.html
)的时候遇到下面的问题:
ExecuteNonQuery("insert into Employee(Photo) values(@Photo)",new SqlParameter("@Photo",emp.Photo));
当执行插入语句,emp.Photo的值为DBNull.Value时提示:操作数类型冲突: nvarchar 与 image 不兼容;
这其实是没有指定DbType的原因。大部分情况下,使用SqlParameter的时候不需要指定参数的数据类型(DbType或者SqlDbType),ADO.Net会根据value的类型来自动判断出数据类型,即使ADO.Net不能判断出来,SQLServer数据库服务器也能进行大部分的判断(当然会损失一些性能)。
但是对于这个程序中的Image类型就没那么幸运了,如果不指定DbType,而恰好数据又为Null/DbNull的时候,ado.net就把数据类型识别成为了nvarchar,就出现了上面的错误了。因此只要指定DbType或者SqlDbType即可。下面的代码成功运行:
SqlHelper.ExecuteNonQuery("insert into T_Persons(Name,Photo) values(@Name,@Photo)", new SqlParameter("@Name", "itcast"),
new SqlParameter("@Photo", SqlDbType.Image) { Value=DBNull.Value});
因此以后不要偷懒了,还是每次都老老实实的指定数据类型吧。
- 关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
- 关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
- 操作数类型冲突: nvarchar 与 image 不兼容
- System.Data.SqlClient.SqlException: 操作数类型冲突: tinyint 与 image 不兼容
- 作数的类型
- 关于DBNull类型的说明
- 操作数类型冲突: date 与 int 不兼容
- 操作数类型冲突: int 与 date 不兼容
- C#中关于updatePanel与freeTextBox不兼容的问题
- 关于eWebEditor编辑器与IE7、IE8不兼容的问题
- 关于网页与firefox不兼容的问题
- 关于List l1 = new LinkedList();报错:不兼容的类型的问题的解决
- 不兼容的类型
- 关于火狐不兼容的问题
- 工作总结,关于浏览器不兼容的问题。
- SQL Server全文索引关于varchar与nvarchar的问题
- 使用Hibernate轻松解决java中date与datetime类型不兼容的问题
- 使用Hibernate轻松解决java中date与datetime类型不兼容的问题
- Emacs package system
- HDUOJ 4630 2013多校第三场第10题 No Pain No Game
- zoj 3686 A Simple Tree Problem(dfs+线段树)
- u-boot链接脚本
- linux定时运行命令脚本crontab
- 关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
- JSP学习1
- hdu2102之BFS
- 【解决方法】VS 丢失模板
- 广度优先遍历二叉树
- Linux寻找和杀掉僵尸进程代码
- Servlet事件监听器
- Eclipse快捷键
- 0的作用