jdbc4 - 如何插入货币类型?

发布于 2024-12-01 12:44:47 字数 165 浏览 1 评论 0原文

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

任何有用的评论表示赞赏

I faced an interesting problem as... I have MSSQL (2005) table A which contains money type column; the thing is I want to insert value to this column with T-SQL procedure call from Java code but I am not pretty sure which Java type should I use to prepare statement for this column to insert value?
I couldn't find any example so maybe you can share some helpful snippets.

Any useful comment is appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

屋顶上的小猫咪 2024-12-08 12:44:47

难道你不能只使用double(或者也许float,但可能不是)?另外,通过在数据库中使用 MONEY 您可以获得什么?我发现 DECIMAL 更加可靠和灵活 - 有关一些背景信息,请参阅 要戒掉的坏习惯:选择错误的数据类型性能/存储比较:MONEY 与 DECIMAL (抱歉缺少图片)。

Couldn't you just use a double (or maybe float, but probably not)? Also, what are you gaining by using MONEY in your database? I've found DECIMAL to be much more reliable and flexible - for some background see Bad habits to kick : choosing the wrong data type and Performance / Storage Comparisons : MONEY vs. DECIMAL (sorry for missing images).

叹倦 2024-12-08 12:44:47

好的...
我能弄清楚的是不要直接使用资金类型只是因为jdbc4连接器PrepareSatement不包含setMoney等所以我想分享一些走动...当然,这不是最终的代码方式但仍然...

所以

  • A) Money 类从这里获取字符串$00.00 与
    displayAsDollars 方法

  • B) 使用如下代码创建 mssql 过程

    创建过程 aschema.test @a varchar(10)
    作为
    开始
    
    声明@b 钱    
    SET @b=CAST @a 作为金钱
    
    --todo:插入下一个...
    
    结尾;
    
  • ,因此 proc 调用非常简单,如下所示

    金钱 m=new Money("12.99");
    
    callableStatement = (SQLServerCallableStatement) 连接.prepareCall(
                            “{呼叫”+
                            DATABASE_NAME+
                            “.”+
                            SCHEMA_NAME+
                            “。测试(?)}”);
    callableStatement.setString(1,m.displayAsDollarsCorrectly());
    callableStatement.executeUpdate();
    

    //...

正如我所说,这不是最终的代码决定,而是一个临时概念,如果您确实需要在旧的 mssql 数据库中使用资金类型。至少对我来说这是一个临时答案:)

我希望这对某人有帮助:)

祝你好运

OK...
things I could figure out is NOT TO USE money type directly just because the jdbc4 connector PrepareSatement does not contain setMoney etc so I want to share some walk around... Of course, it is not the final code way but still...

So

  • A) Money class from here to get string as $00.00 with
    displayAsDollars method

  • B) create mssql procedure with code like a

    create procedure aschema.test @a varchar(10)
    AS
    BEGIN
    
    DECLARE @b money    
    SET @b=CAST @a AS MONEY
    
    --todo: insert next...
    
    END;
    
  • C) So the proc call is quite simple as

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

    //...

As I was saying it is not the final code decision but a temp conception which may be helpful as well if you really need to use money type in your old mssql database. At least it was a temp answer in my case :)

I hope it will be helpful for someone :)

Good luck

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文