2011-08-24 26 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