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

发布于 2024-12-14 15:16:34 字数 841 浏览 3 评论 0原文

这次迁移似乎确实具有挑战性。我现在想做的是对 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。客户端这不起作用:

对于 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 没有问题,这似乎很荒谬。有什么建议吗?

谢谢&最好的问候-马蒂

This migration seem to be really challenging. What i'm trying to do now is to execute simple queries to a oracle db table:

OBJECTID NOT NULL NUMBER,
DOUBLEVALUE NOT NULL FLOAT(126),
MODTIME DATE

when I use System.Data.OracleClient I can INSERT parametrized queries where parameter values are:

123, 
"123.123", 
DateTime.Now.ToString(). 

and DbParameter.DbTypes are:

DbType.Int32,
DbType.Double,
DbType.Date

If I use Oracle.DataAccess.Client this is not working:

For DOUBLEVALUE I get exception because in my system Convert.ToDouble (which is called by OracleParameter.PreBind_Double) expects that I use comma ("123,123"). I do not want to change all the values in all programs and files. Also OleDb can handle this without problems.

For MODTIME I get "ORA-01830: date format picture ends before converting entire input string." This works if I change the value to DateTime.Now.ToShortDateString(). Possibly also if I change the parameter type. Also this OleDb can handle.

It seems ridiculous that Oracle.DataAccess.Client cannot handle these really basic situations which System.Data.OracleClient and System.Data.OleDb have no problems. Any recommendations?

Thanks & Best regards -Matti

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

他夏了夏天 2024-12-21 15:16:34

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

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");

Your problem with the comma comes from the default culture used by your processing thread. Try forcing en-US culture:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文