如何将双打和日期从 System.Data.OracleClient 迁移到 ODP.NET?
这次迁移似乎确实具有挑战性。我现在想做的是对 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的逗号问题来自处理线程使用的默认区域性。尝试强制 en-US 文化:
Your problem with the comma comes from the default culture used by your processing thread. Try forcing en-US culture: