小数点(。)作为java应用程序中的分隔符和Oracle数据库中的逗号(,)分隔符

问题描述:

问题不容易解决。小数点(。)作为java应用程序中的分隔符和Oracle数据库中的逗号(,)分隔符

  1. 用下面的代码,

    Locale.setDefault(new Locale("fr", "FR")); 
    

    浮子的格式是123 456,45和日期格式为30个火星2015

  2. 用下面的代码,

    Locale.setDefault(new Locale("en", "US")); 
    

    float的格式为123,456.45,日期格式为2015年3月30日。

如何设置默认Locale拥有123,456.45和30 mars 2015?我的意思是英文格式的日期和其他属性的浮法和法文格式?是否可以设置法语格式的区域设置并仅更改小数点分隔符(。)?

我想解决的问题如下: 我想从jdbcTemplate和float和date参数调用Java的PL/SQL过程。数据库设置为点(。)作为小数点分隔符和组的逗号。 Java应用程序使用默认的Locale设置为法语(fr_FR)。但是在执行应用程序时,PL/SQL过程中会出现错误,因为小数点分隔符不相同。日期格式在数据库和Java应用程序中是相同的。我无法更改数据库设置。我怎样才能无误地执行PL/SQL过程?

感谢您的帮助。

+0

您可以显式地指定格式(例如不使用默认Locale)在解析站点。 – user2864740 2015-03-30 20:29:34

+0

我会建议为您的'NumberFormat'和'DateFormat'实例使用正确的语言环境,而不是更改默认的'Lo​​cale'。 – 2015-03-30 20:29:41

每次您想格式化某些内容时,您都不必操作默认的LocaleNumberFormat类和DateFormat类都有用于获取特定语言环境中的数字和日期格式化程序的静态方法。

对于NumberFormat,请使用the getNumberInstance method that takes a Locale as a parameter

double value = 123456.45; 
NumberFormat english = NumberFormat.getNumberInstance(new Locale("en", "US")); 
System.out.println(english.format(value)); 

输出:

123,456.45 

对于DateFormat,使用the getDateInstance method that takes a Locale as a parameter

Date now = new Date(); 
DateFormat french = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("fr", "FR")); 
System.out.println(french.format(now)); 

输出:

30 mars 2015 
+0

这个问题实际上是在其他地方,与数据库连接。 oracle中的数据库以点(。)作为小数点分隔符,逗号(,)作为组。语言环境设置为法语。当使用jdbcTemplate将java应用程序的float和date参数发送到oracle pl/sql过程时,由于两种不同的小数格式,float参数在pl/sql过程中引发错误。你的解决方案能解决问题吗? – IntegraleOne 2015-03-30 20:56:42

+0

@IntegraleOne啊哈,[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你为什么不重新制定最重要的问题来说出你的真实问题?并添加适当的标签。了解Spring和Oracle的人会更好地帮助你。 – RealSkeptic 2015-03-30 21:05:35

+0

是否可以创建自己的语言环境?例如,通过复制法文文件并在小数点后用点(“。”)设置? – IntegraleOne 2015-04-19 09:25:27