0

我有以下专栏:

CheckingTime
------------
1 7/5/2011
2 
3 
4 5/8/2012

(列格式是日期。)我正在使用数据读取器读取 DB1 中的所有列和行,并将它们插入 DB 2,如下所示:

while (dr.Read())
{
string finalratingdate = ((dr[19] != DBNull.Value) ? Convert.ToString(dr[19]) : "");
}

所以插入时应该检查是否有DBNull,如果没有,插入值,如果是插入“”,但问题是我收到以下错误:

System.Data.OracleClient.OracleException:ORA-01843:无效月份

我只用 datetimes 变量得到这个错误。我能够将所有其他变量转换为字符串并插入它们。

你有什么主意吗 ?

谢谢

4

1 回答 1

0

我相信异常表明您在数据库中的列是类型Date并且它不能容纳空字符串。您应该使用 初始化变量,而不是语句中的空字符串null,这将使您能够在Date列中设置空值。所以你的陈述是:

string finalratingdate = ((dr[19] != DBNull.Value) ? Convert.ToString(dr[19]) : null);

我不确定为什么要将DateTime字段转换为数据库的字符串,您应该使用参数化查询并将DataTime对象作为参数添加,而不是将其转换为字符串。

于 2013-05-05T02:54:33.317 回答