0

这种迁移似乎非常具有挑战性。我现在要做的是对 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 没有问题的这些非常基本的情况似乎很荒谬。有什么建议吗?

谢谢和最好的问候-马蒂

4

1 回答 1

0

您的逗号问题来自处理线程使用的默认区域性。尝试强制 en-US 文化:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
于 2011-11-11T12:17:17.060 回答