c# - 如何一般地格式化 OracleNumber

标签 c# oracle dataset dataadapter

我为 Oracle 构建了一个带有 CSV 导出功能的小型查询工具,并使用 OracleDataAdapter 来填充显示在 DataGrid (WinForms) 中的数据集。起初我使用 .NET 类型(DateTime、decimal、string...),但在某些情况下我遇到了溢出异常,因为 Oracle (NUMBER(30,10)) 中的精度更高。因此,我必须在 OracleDataAdapter 中设置属性 ReturnProviderSpecificTypes = true,所以现在它使用 OracleClient(OracleNumber、OracleBoolean、OracleString,...)类型来代替。

问题是,当我在 nl-BE 区域时(我们使用逗号作为小数点分隔符,点作为千位分隔符),所有内容始终(在屏幕上和 CSV 输出期间)本地化为 en-US 格式。 CSV 中的列分隔符是分号 btw,因此不会干扰十进制数字中的逗号。

那么有没有一种方法可以针对这些类型重写 ToString 方法?某种注入(inject)格式化引擎?

谢谢

最佳答案

您可以使用 ALTER SESSION SET NLS_...。看:http://download.oracle.com/docs/cd/B28359_01/olap.111/b28126/dml_options072.htm

有一个示例说明它如何使用点和小数点以及空格作为千​​位分隔符(还要注意日期时间设置):

alter session set NLS_NUMERIC_CHARACTERS='. '
alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS'

关于c# - 如何一般地格式化 OracleNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4244493/

相关文章:

c# - Web.Optimizations - 有什么方法可以从 Style/Script Bundle 中获取所有内容?

c# - 急切操作和短路操作的区别? (| 与 || 和 & 与 &&)

c# - 在 C# 中比较两个结构的值

c# - 将 ActionResult 返回到对话框。 ASP.NET MVC

sql - 如果条件包含单引号('),如何编写选择查询

R 数据集与 tableau 的连接

c# - 更新内存数据表中的单元格

r - ggplot 2's mpg dataset--what' s "fl."变量?

sql - 在 Oracle 数据库中查找键是否存在的最快方法

sql - PL/SQL 验证/插入/更新状态 - retval 与异常