2011-08-24 73 views
0

我遇到了一個有趣的問題,因爲...我有MSSQL(2005)表A包含錢類型列;問題是我想用Java代碼中的T-SQL過程調用向此列插入值,但我不太確定應該使用哪種Java類型來爲此列插入值來準備語句? 我找不到任何示例,所以也許你可以分享一些有用的片段。jdbc4 - 如何插入錢類型?

任何有用的註釋表示讚賞

回答

0

好的...... 我能弄清楚的一點是不能直接使用錢類型,因爲jdbc4連接器的PrepareSatement不包含setMoney等,所以我想分享一些步行......當然,這不是最終代碼的方式,但還是......

所以

  • A)從here Money類得到的字符串作爲$ 00.00與 displayAsDollars方法

  • B)創建MSSQL程序與像

    create procedure aschema.test @a varchar(10) 
    AS 
    BEGIN 
    
    DECLARE @b money  
    SET @b=CAST @a AS MONEY 
    
    --todo: insert next... 
    
    END; 
    
  • C代碼),所以調用proc是相當簡單

    Money m=new Money("12.99"); 
    
    callableStatement = (SQLServerCallableStatement) connection.prepareCall(
             "{call "+ 
             DATABASE_NAME+ 
             "."+ 
             SCHEMA_NAME+ 
             ".test(?)}"); 
    callableStatement.setString(1,m.displayAsDollarsCorrectly()); 
    callableStatement.executeUpdate(); 
    

    // ...

由於我說這不是最終的代碼決定,而是一個臨時概念,如果你真的需要在舊的mssql數據庫中使用金錢類型,這也可能有幫助。至少這是在我的情況:)

我希望這將是有幫助的人:)

運氣好一個臨時的答案

1

你不能只用一個double(或者float,但可能不會)?另外,你在數據庫中使用MONEY獲得什麼?我發現DECIMAL更加可靠和靈活 - 對於一些背景,請參閱http://databases.aspfaq.com/database/what-datatype-should-i-use-for-numeric-columns.htmlhttp://sqlblog.com/blogs/aaron_bertrand/archive/2008/04/27/performance-storage-comparisons-money-vs-decimal.aspx

+1

電解金屬錳...錢類型是00.00類型平常的事情,所以我在我的MSSQL數據庫中使用它...我聽說Java有錢類型,所以它可以幫助嗎? – user592704

+0

我不確定在Java中是否存在反映「MONEY」的基本類型 - 至少我沒有在此處列出任何此類事物:http://softpixel.com/~cwright/programming/datatypes.java。 PHP。無論如何存儲'00.00','MONEY'不是*「通常的事情」 - 'DECIMAL'是。你讀過我指出的文章嗎? –

+0

沒有原始類型作爲金錢,因爲我可以看到它,但有一個類Money http://www.java2s.com/Code/Java/Data-Type/Moneytype.htm其中包含BigDecimal,所以它可能會有所幫助然後... – user592704