嘿我的prepareStatement有问题,我想找几个列的min,我迭代列的名称并将它们插入到我的preparedStatement中,就像那样
connection.prepareStatement("SELECT min( ? ) as min FROM test");
minStatement.setString(1, "some_column");
当从ResultSet中检索时我得到列名,在这种情况下,结果是" some_column"并且应为0.使用正常语句时,它确实返回正确的值。 我不知道我做错了什么。 谢谢你的帮助。
答案 0 :(得分: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");
但这可能导致注射攻击。