我遇到了一个有趣的问题...我有MSSQL(2005)表A,其中包含货币类型列;我希望通过Java代码中的T-SQL过程调用将值插入此列,但我不确定应该使用哪种Java类型来为此列准备语句以插入值? 我找不到任何例子,所以也许你可以分享一些有用的片段。
赞赏任何有用的评论
答案 0 :(得分:1)
你能不能只使用double
(或者float
,但可能不会?)另外,您在数据库中使用MONEY
获得了什么?我发现DECIMAL
更加可靠和灵活 - 对于某些背景,请参阅Bad habits to kick : choosing the wrong data type和Performance / 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类型,那么它也可能会有所帮助。在我的情况下,至少这是一个临时答案:)
我希望它会对某人有所帮助:)
祝你好运