日期:2014-05-17 浏览次数:21164 次
?
“指定的转换无效”的解决方案:
?
发生该错误有以下几种情况:
?
第一:数据库字典的数据类型与程序中的不同。
?
??????? 例如:在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 方法抛出“指定的转换无效”异常的原因
?
?
?
?
?