jdbc4 - 如何插入钱币类型?

时间:2011-08-24 22:16:23

标签: sql-server-2005 jdbc database-connection

我遇到了一个有趣的问题...我有MSSQL(2005)表A,其中包含货币类型列;我希望通过Java代码中的T-SQL过程调用将值插入此列,但我不确定应该使用哪种Java类型来为此列准备语句以插入值? 我找不到任何例子,所以也许你可以分享一些有用的片段。

赞赏任何有用的评论

2 个答案:

答案 0 :(得分:1)

你能不能只使用double(或者float,但可能不会?)另外,您在数据库中使用MONEY获得了什么?我发现DECIMAL更加可靠和灵活 - 对于某些背景,请参阅Bad habits to kick : choosing the wrong data typePerformance / Storage Comparisons : MONEY vs. DECIMAL(抱歉丢失图像)。

答案 1 :(得分:0)

OK ... 我可以想出的事情是不要直接使用钱类型因为jdbc4连接器PrepareSatement不包含setMoney等所以我想分享一些走动...当然,它不是最终的代码方式但仍然...... / p>

所以

  • A)来自here的金钱等级,以获得$ 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数据库中使用money类型,那么它也可能会有所帮助。在我的情况下,至少这是一个临时答案:)

我希望它会对某人有所帮助:)

祝你好运