如何将双精度和日期从System.Data.OracleClient迁移到ODP.NET

本文关键字:OracleClient Data 迁移 NET ODP System 双精度 日期 | 更新日期: 2023-09-27 18:14:05

这个迁移看起来真的很有挑战性。我现在要做的是执行一个简单的查询oracle数据库表:

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,我得到异常,因为在我的系统转换。ToDouble(由OracleParameter.PreBind_Double调用)期望我使用逗号("123,123")。我不想改变所有程序和文件中的所有值。OleDb也可以毫无问题地处理这个问题。

对于MODTIME,我得到"ORA-01830:日期格式图片在转换整个输入字符串之前结束。"如果我将值更改为DateTime.Now.ToShortDateString(),则可以工作。也可能如果我改变参数类型。这个OleDb也可以处理。

在System.Data.OracleClient和System.Data.OleDb没有问题的情况下,Oracle.DataAccess.Client不能处理这些真正的基本情况,这似乎很荒谬。你有什么推荐吗?

谢谢,问候-Matti

如何将双精度和日期从System.Data.OracleClient迁移到ODP.NET

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

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
相关文章: