如何将双精度和日期从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
逗号的问题来自处理线程使用的默认区域性。尝试强制使用en-US文化:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");