在MySQL上的Java JDBC中使用选择查询时,似乎只返回列的名称,而不返回与之关联的值。像例如,以下方法返回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';
,它返回Content而不是预期的{"Test":"Workss"}
。这是预料之中的,因为在MySQL'debugger'中运行完全相同的查询会返回
+-------------------+
| Content |
+-------------------+
| {"Test":"Workss"} |
+-------------------+
1 row in set (0.00 sec)
我在做什么错,我该如何解决?
答案 0 :(得分:1)
不要使用'。使用" + column + "
答案 1 :(得分:1)
感谢Alex K.发布了正确的答案,我已经知道我的问题确实已经解决了。解决方法是不要将列放在引号中,而应该放在坟墓中,所以我不应该做"select '" + column + "' from "
“ +列+” "select
而不必做from "
在任何情况下都可以使用。