“指定的转换无效”的解决方案:
发生该错误有以下几种情况:
第一:数据库字典的数据类型与程序中的不同。
例如:在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;}
....
}
第三:跨线程调用导致的“指定的转换无限”问题。
对于这种情况,还未遇到过。不过这儿有一参考:
分享到:
2012-12-26 11:23
浏览 5125
分类:数据库
评论