0

嘿,我对preparedStatement 有问题,我想找到几列的最小值,我正在迭代列的名称并将它们插入到我的preparedStatement 中

connection.prepareStatement("SELECT min( ? ) as min FROM test");
minStatement.setString(1, "some_column");

当从 ResultSet 检索时,我得到了列名,在这种情况下,结果是“some_column”,应该是 0。使用普通语句时,它确实返回正确的值。我不知道我做错了什么。谢谢你的帮助。

4

1 回答 1

4

您不能像这样在准备好的语句中指定列名,您得到的是:

SELECT MIN('some_column') AS min FROM test

代替:

SELECT MIN(some_column) AS min FROM test

因此,您的查询选择最小值'some_column'... 即'some_column'.

相反,您可以尝试:

connection.prepareStatement("SELECT min(" + some_column + " ) as min FROM test");

但这可能会导致注入攻击。

于 2013-11-14T23:02:30.627 回答