无法将类型为“System.DBNull”的对象强制转换为类型“System.String”分析及解决方案
来源:互联网 发布:手机上做图的软件 编辑:程序博客网 时间:2024/04/28 23:54
今天在做项目的时候,无意间犯了一个错误,出现了:无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。的错误提示。想着很多的初学者可能会遇上同样的问题,现在分析出现的问题,并解决之。
问题:用强类型DataSet 获取Oracle数据,其中一个字段值为DBNull,报错:无法强制转换成String。
详细错误信息如下所示:
无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidCastException: 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
源错误:
行 5092: get {
行 5093: try {
行 5094: return ((string)(this[this.tableBRN_YXJX_MN_ATTACHED.AUDITER_CODEColumn]));
行 5095: }
行 5096: catch (global::System.InvalidCastException e) {后面还有很多的,就不再累述了。出现问题的原因如下:
数据库中很多字段是空值,但是需要加载到数据控件中,于是在默认的情况下就会出现问题了。因为微软在设计的时候就是默认的数据字段在加载的时候如果实例数据为空就会抛出异常,正是由于微软这个非常人性化的设计出现了上述的错误。
解决的方案:方案很多,这里就说说几种简单方便的方案。
1、打开强类型DataSet的设计视图,找到报错的列,选择此列,在【属性】窗口中可以看到一个设置
选项:
NullValue。
这个值有三个选项:Null,Empty,Throw exception
选择Null或者Empty就OK了。
这个选项用于设置如果所取数据的这个字段值为NullValue时的处理办法。默认是第三个选项:抛出异常。
修改后就OK了!
2、可以改写SQL在 字段添加ISNULL(["你的要查询的字段"],0);这个的效果是如果这个字段的值是空那转成"0";
3、 在读取时价格判断,if(读的值!=“”){读取值,赋值;}这个是如果读的值不为空就执行赋值的操作
4、sdr.IsDBNull(5) ? string.Empty : sdr.GetString(5);这样问题就会迎刃而解了。
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”分析及解决方案
- C# 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”。
- 错误:无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”。
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.Byte[]”
- 无法将类型为“System.Int32”的对象强制转换为类型“System.String”
- 关于MVC中无法将类型为“System.Int32”的对象强制转换为类型“System.String”的问题。
- Linq集合查询出现无法将类型为“System.Int32”的对象强制转换为类型“System.String”异常
- ASP.NET.MVC异常--无法将类型为System.Int32的对象强制转换为类型System.String
- 无法将类型为“System.Xml.XmlComment”的对象强制转换为类型“System.Xml.XmlElement”。
- 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass
- 解决“无法将System.Byte[]的对象强制转换为类型System.IConvertible”的错误
- Repeater嵌套无法将类型为“System.Data.DataRow”的对象强制转换为类型“System.Data.DataRowView
- 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.TextBox
- 无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.Text
- 【Winform】 无法将类型为“System.Windows.Forms.SplitContainer”的对象强制转换为类型“System.ComponentModel.ISupportInitialize”。
- 类型“System.DBNull”的值无法转换为“String”最好的解决方法
- 无法将类型为“Finisar.SQLite.SQLiteConnection”的对象强制转换为类型“System.Data.Common.DbConnection”。
- 新手安装指南:一步一步从Windows到苹果雪豹(PC机装Mac OS X !极品珍藏)
- 6 Things You Should Know About Fragment URLs
- 百度贴吧布局框架的研究与实现(Android版本)
- PB中树形目录的实现
- 博客在更新,我在成长。
- 无法将类型为“System.DBNull”的对象强制转换为类型“System.String”分析及解决方案
- word 中出现一些乱码如音标变成乱码的解决方法
- 寻找微吧品牌设计思路和方向
- Emacs 显示行数
- Link时出现:fatal error LNK1104: cannot open file Debug/XXXXXX.exe
- linux程序员必备:vim+ctags
- 让学习有“基”可循!
- 解析QT 4.5 编译(6)
- java hibernate 中"node to traverse cannot be null"错误解决办法