关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
来源:互联网 发布:苹果mac截屏怎么保存 编辑:程序博客网 时间:2024/05/19 16:50
关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
分类: .NET2013-07-31 12:46 72人阅读 评论(0) 收藏 编辑 删除
ADO.NET.NET
有学生在看传智播客的免费“.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类型不兼容的问题
- Spring-Spring容器启动各项操作窥探(AbstractApplicationContext#refesh()执行逻辑分析)
- UTF-8字符处理:
- SEO优化.htm.html.shtml静态页面与伪静态分析
- js xss系列防御转载文章(一)
- 输出随机认证码图片
- 关于"作数类型冲突: nvarchar 与 image 不兼容"的问题(DBNull)
- 指针函数与函数指针区别《转载》
- Java中重载和重写的区别
- OGRE(六)
- hdu 1573 A/B (扩展欧几里得)
- 整理笔记
- Matlab统计矩阵内各值出现次数以及所占比例
- 跨站脚本XSS
- android开发之自动化编译ota升级包脚本说明