【问题标题】:vert.x Reactive mySQL client query always give empty resultvert.x 反应式 mySQL 客户端查询总是给出空结果
【发布时间】:2020-03-16 11:30:20
【问题描述】:

我正在使用 java Vert.x 项目,并使用 vert.x 官方 Documentation 的指南使用 Reactive MySQL Client 连接到 MySQL。当我尝试从SELECT 查询中检索数据时,即使数据库中有数据,它也总是给出空结果。下面给出了用于检索数据的方法。

client.getConnection(conRes -> {
        if(conRes.succeeded()) {
          logger.info("Connected to DB !!!");
          SqlConnection conn = conRes.result();
          String query = "SELECT * FROM table where id ="+id;

          conn.query(query, res-> {
            logger.info("Query Executed for retrieve data, id: "+id);
            if(res.succeeded()) {
              RowSet<Row> result = res.result();

              if(result.size() > 0) { //Also tried with result.rowCount()

                Row rowRes = result.iterator().next();
                stringPromise.complete(rowRes.getString("reference_number"));

              } else {
                logger.error("No data reference number for id: "+id); // Always endup with here
                stringPromise.fail("No data reference number for id: "+id);
              }
              conn.close();
            } else {
              logger.error("Query executed failed due to "+res.cause().getMessage());
              res.cause().printStackTrace();
              stringPromise.fail(res.cause());
              conn.close();
            }
          });
        }
      });

上述方法的连接属性是,

MySQLConnectOptions connectOptions = new MySQLConnectOptions()
      .setPort(3306)
      .setHost(host_ip)
      .setDatabase(db_name)
      .setUser(username)
      .setPassword(password);

    // Pool options
    PoolOptions poolOptions = new PoolOptions()
      .setMaxSize(5);

    client = MySQLPool.pool(vertx, connectOptions, poolOptions);

该方法没有显示错误,但总是给出 o 结果并显示logger.error("No data reference number for id: "+id);。是什么问题以及如何解决此问题。

【问题讨论】:

  • 我已经删除了jdbc标签,因为Vert.x MySQL客户端不是JDBC,所以JDBC标签不适用于您的问题。

标签: java mysql vert.x


【解决方案1】:

你的 id 是一个字符串吗?因为那你必须把它放在撇号之间:

String query = String.format("SELECT * FROM table where id='%s'", id);

【讨论】:

  • 我的 ID 不是整数
【解决方案2】:

您可以尝试通过创建一个小项目或向项目添加测试来制作复制器吗?你放在这里的代码对我来说似乎很正常。

【讨论】:

  • 我会尝试添加测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多