SQL select命令仅返回列名称

时间:2018-08-10 12:02:35

标签: java mysql sql

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

我在做什么错,我该如何解决?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

感谢Alex K.发布了正确的答案,我已经知道我的问题确实已经解决了。解决方法是不要将列放在引号中,而应该放在坟墓中,所以我不应该做"select '" + column + "' from "“ +列+” "select而不必做from "在任何情况下都可以使用。