当前位置: 首页 > 知识库问答 >
问题:

使用vertx-jdbc插入BigDecimal到数据库

子车心思
2023-03-14

我使用的是vertx jdbc客户端(http://vertx.io/docs/vertx-jdbc-client/java/)我的数据库连接。这适用于除BigDecimal之外的所有数据类型。

在我的数据库中,类型是decimal(13,2),在Java中,我使用的是BigDecimal数据类型。我只是想读书

不幸的是,我得到了以下例外:

    SEVERE: Unhandled exception
java.lang.IllegalStateException: Illegal type in JsonObject: class java.math.BigDecimal
    at io.vertx.core.json.Json.checkAndCopy(Json.java:215)
    at io.vertx.core.json.JsonArray.add(JsonArray.java:444)

查看io.vertx.core.json.Json.checkAndCopy告诉我BigDecimal不受框架支持:

@SuppressWarnings("unchecked")
  static Object checkAndCopy(Object val, boolean copy) {
    if (val == null) {
      // OK
    } else if (val instanceof Number && !(val instanceof BigDecimal)) {
      // OK
    } else if (val instanceof Boolean) {
...
}

我谷歌了一下,但没有找到为什么不支持的解释。

对此有解决办法吗?

使用以下版本:(Java8,Vertx 3.5.0,Postgres 9.6)

共有1个答案

滕项明
2023-03-14

您可以将BigDecimal转换为String,然后使用CAST功能:

INSERT INTO test (i) VALUES (CAST('3.235' AS DECIMAL))

然后再读一遍:

SELECT CAST(i AS TEXT) from test
 类似资料:
  • 我正在使用vertx的JDBC lib,我需要批量插入包含数组字段的值。 我试过: 我的输出: 在切换到准备好的报表之前,我的工作要求是: 我的数据库是Apache Phoenix,是Hbase的sql层。 知道怎么解决吗?

  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中向数据库的一个表中插入数据记录。 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中数据库表中插入数据记录。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 所需步骤 使用JDBC应用程序向表中插入数据记录需要以下步骤: 导入包:需要包含包含数据库编程所需的JDBC类的

  • 我的MySQL数据库中有两个表: 另外,如何获取给定名称的数据? 任何帮助都是非常感谢的!

  • 问题内容: 有人可以告诉我,以下JDBC代码中的第一个条件是否是针对两个不同的表执行两个不同的SQL查询? 问题答案: 在我的书中,我总是建议关闭已经打开的资源,以避免可能的泄漏。 一种更现代的方法是使用try-with- resources :

  • 我是mysql和php的初学者。在这个问题上陷入了困境。不知道问题出在哪里。但是如果我直接执行insert查询,它就会被执行,而如果我从用户那里接受它,它就不会被执行(代码中显示了这一点)。可能问题出在我用来检索用户提交的值的$\u POST[]方法上。我已经提交了两个代码,addbooks。php(用户提交值的表单)和add。php(插入数据库)。

  • 我有一个实体: 目标是通过本机查询将其保存到PostgreSQL数据库: 问题在于,大十进制值的转换方式类似于,而不是。以下是错误消息: