`
南山忍者
  • 浏览: 83302 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C#程序中“指定的转换无效”的解决方案

 
阅读更多

 

“指定的转换无效”的解决方案:

 

发生该错误有以下几种情况:

 

第一:数据库字典的数据类型与程序中的不同。

 

        例如:在Oracle数据库中number(10,5)对应到程序中应为double类型。

 

        解决方案:将数据模型中相应的字段类型进行修改。

 

        比较容易出错的是:Oracle中的number(10,5)对应到程序,应为double类型。

                                                   number(5)对应到程序中的int类型(根据自己的情况,short、int、long均可,不过在使用long时,model中也要相应修改为long)。

 

第二:在读取数据库数据之前没有空值判断。 即,直接从数据库中读取出某一字段,没有对其进行空值判断。

 

       解决方案一:在程序中做空值判断。

if (!Convert.IsDBNull(reader["UNIT_CODE"]))
                    {
                        drugMedicalInfo.UNIT_CODE = reader.GetString(reader.GetOrdinal("UNIT_CODE"));
                    }

 

      解决方案二:在定义数据库模型(/数据结构)时,使用可空类型。

 

public class XXModel
{
    int ? ID {get; set;}
    ....
}

 

第三:跨线程调用导致的“指定的转换无限”问题。

 

      对于这种情况,还未遇到过。不过这儿有一参考:

 

.NET 调用JS:WebBrowser.Document.InvokeScript 方法抛出“指定的转换无效”异常的原因

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics