我有使用MONEY數據類型的JDBC應用程序的問題。 當我插入MONEY列:Informix JDBC,MONEY和字符串文字中的小數點分隔符的問題
insert into _money_test (amt) values ('123.45')
我得到異常:
Character to numeric conversion error
相同的SQL使用ODBC驅動程序原生Windows應用程序的工作。 我住在波蘭和波蘭有語言環境,並且在我的國家逗號分隔數 小數部分,所以我嘗試:
insert into _money_test (amt) values ('123,45')
和它的工作。 我在PreparedStatement中檢查過,我必須使用點分隔符:123.45
。 當然,我可以使用:
insert into _money_test (amt) values (123.45)
但一些代碼爲「一般」,從CSV文件導入數據,它是安全的把數字轉換爲字符串字面。
如何強制JDBC在文本中使用DBMONEY(或簡單點)?
我的工作站是WinXP。 我有版本3.50 TC5/JC5中的ODBC和JDBC Informix客戶端。 我已DBMONEY只是點:
DBMONEY=.
編輯:在Jython的
測試代碼:
import sys
import traceback
from java.sql import DriverManager
from java.lang import Class
Class.forName("com.informix.jdbc.IfxDriver")
QUERY = "insert into _money_test (amt) values ('123.45')"
def test_money(driver, db_url, usr, passwd):
try:
print("\n\n%s\n--------------" % (driver))
db = DriverManager.getConnection(db_url, usr, passwd)
c = db.createStatement()
c.execute("delete from _money_test")
c.execute(QUERY)
rs = c.executeQuery("select amt from _money_test")
while (rs.next()):
print('[%s]' % (rs.getString(1)))
rs.close()
c.close()
db.close()
except:
print("there were errors!")
s = traceback.format_exc()
sys.stderr.write("%s\n" % (s))
print(QUERY)
test_money("com.informix.jdbc.IfxDriver", 'jdbc:informix-sqli://169.0.1.225:9088/test:informixserver=ol_225;DB_LOCALE=pl_PL.CP1250;CLIENT_LOCALE=pl_PL.CP1250;charSet=CP1250', 'informix', 'passwd')
test_money("sun.jdbc.odbc.JdbcOdbcDriver", 'jdbc:odbc:test', 'informix', 'passwd')
結果,當我跑錢字面點和逗號:
C:\db_examples>jython ifx_jdbc_money.py
insert into _money_test (amt) values ('123,45')
com.informix.jdbc.IfxDriver
--------------
[123.45]
sun.jdbc.odbc.JdbcOdbcDriver
--------------
there were errors!
Traceback (most recent call last):
File "ifx_jdbc_money.py", line 16, in test_money
c.execute(QUERY)
SQLException: java.sql.SQLException: [Informix][Informix ODBC Driver][Informix]Character to numeric conversion error
C:\db_examples>jython ifx_jdbc_money.py
insert into _money_test (amt) values ('123.45')
com.informix.jdbc.IfxDriver
--------------
there were errors!
Traceback (most recent call last):
File "ifx_jdbc_money.py", line 16, in test_money
c.execute(QUERY)
SQLException: java.sql.SQLException: Character to numeric conversion error
sun.jdbc.odbc.JdbcOdbcDriver
--------------
[123.45]
你可以發佈你正在使用的確切的Java代碼來做你的插入嗎? – 2010-01-07 14:07:22
我剛剛添加了使用ODBC和JDBC驅動程序的Jython代碼。 – 2010-01-11 07:54:49