この移行は本当に難しいようです。私が今やろうとしているのは、Oracle db テーブルに対して単純なクエリを実行することです。
OBJECTID NOT NULL NUMBER,
DOUBLEVALUE NOT NULL FLOAT(126),
MODTIME DATE
System.Data.OracleClient を使用すると、パラメーター値が次のようなパラメーター化されたクエリを INSERT できます。
123,
"123.123",
DateTime.Now.ToString().
DbParameter.DbTypes は次のとおりです。
DbType.Int32,
DbType.Double,
DbType.Date
Oracle.DataAccess.Client を使用すると、これは機能しません。
DOUBLEVALUE の場合、私のシステムでは Convert.ToDouble (OracleParameter.PreBind_Double によって呼び出される) がコンマ ("123,123") を使用することを期待しているため、例外が発生します。すべてのプログラムとファイルのすべての値を変更したくありません。また、OleDb はこれを問題なく処理できます。
MODTIME の場合、「ORA-01830: 入力文字列全体を変換する前に日付形式の画像が終了します。」これは、値を DateTime.Now.ToShortDateString() に変更すると機能します。おそらく、パラメーターの型を変更した場合も同様です。また、この OleDb で処理できます。
Oracle.DataAccess.Client が、System.Data.OracleClient と System.Data.OleDb に問題がないこれらの非常に基本的な状況を処理できないのはばかげているようです。推奨事項はありますか?
よろしくお願いいたします -Matti