Java MySql preparedStatement

时间:2013-11-14 22:57:59

标签: java mysql sql

嘿我的prepareStatement有问题,我想找几个列的min,我迭代列的名称并将它们插入到我的preparedStatement中,就像那样

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

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

1 个答案:

答案 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");

但这可能导致注射攻击。