sqlselect命令只返回列名

toe95027  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(454)

在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)

我做错了什么?我怎样才能解决这个问题?

vmjh9lq9

vmjh9lq91#

不要使用'。使用 " + column + "

qncylg1j

qncylg1j2#

多亏了亚历克斯k。对于张贴正确的答案,我已经认为我的问题是相当明显的修复它做了。解决办法是不把这一列放在引号里,而是放在坟墓里,这样就不用这样做了 "select '" + column + "' from " 我本该这么做的 "select “+列+” from " 但不把专栏放在任何地方也会起作用。

相关问题