这种迁移似乎非常具有挑战性。我现在要做的是对oracle db表执行简单查询:
OBJECTID NOT NULL NUMBER,
DOUBLEVALUE NOT NULL FLOAT(126),
MODTIME DATE
当我使用System.Data.OracleClient时,我可以插入参数值为的参数化查询:
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
答案 0 :(得分:0)
您使用逗号的问题来自您的处理线程使用的默认文化。尝试强迫美国文化:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");