在mysql上使用javajdbc中的select查询时,它似乎只返回列名,而不返回与之相关联的值。例如,下面的方法返回 Content
即使这是列的名称而不是它的值。
public <T> T select(String column, @Nullable List<DBCondition> conditions) {
try (Statement statement = MySQL.createStatement()) {
ResultSet rs = statement.executeQuery("select '" + column + "' from " + name + (conditions == null || conditions.isEmpty() ? "" : " " + MySQL.conditionsListToString(conditions)) + ";");
rs.next();
return (T) rs.getObject(column);
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
调试时,创建的查询最终被 select Content from testtable where Name='Main_test';
返回内容而不是 {"Test":"Workss"}
一如预期。这是意料之中的,因为在mysql“debugger”中运行完全相同的查询会返回
+-------------------+
| Content |
+-------------------+
| {"Test":"Workss"} |
+-------------------+
1 row in set (0.00 sec)
我做错了什么?我怎样才能解决这个问题?
2条答案
按热度按时间vmjh9lq91#
不要使用'。使用
" + column + "
qncylg1j2#
多亏了亚历克斯k。对于张贴正确的答案,我已经认为我的问题是相当明显的修复它做了。解决办法是不把这一列放在引号里,而是放在坟墓里,这样就不用这样做了
"select '" + column + "' from "
我本该这么做的"select
“+列+”from "
但不把专栏放在任何地方也会起作用。