【发布时间】: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标签不适用于您的问题。