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 方法抛出“指定的转换无效”异常的原因

猜你喜欢

转载自zlbcdn.iteye.com/blog/1754317
今日推荐