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に null 値を設定できるようになりDateます。したがって、あなたの声明は次のようになります。

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

DateTimeデータベースのフィールドを文字列に変換する理由がよくわかりません。パラメーター化されたクエリを使用し、DataTimeオブジェクトを文字列に変換する代わりにパラメーターとして追加する必要があります。

于 2013-05-05T02:54:33.317 に答える