简体   繁体   English

Java MySql prepareStatement

[英]Java MySql preparedStatement

Hey I have problem with preparedStatement, I want to find min for few columns, I'm iterating over the names of columns and inserting them inside my preparedStatement like that 嘿,我对prepareStatement遇到问题,我想为几个列查找最小值,我正在遍历列的名称,然后将其插入到我的prepareStatement中

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

and when retrieving from ResultSet I'm getting the column name, in this case the result is "some_column" and should be 0. When using normal statement it does return right value. 从ResultSet检索时,我得到的是列名,在这种情况下,结果为“ some_column”,应为0。使用常规语句时,它确实返回正确的值。 I have no idea what I'm doing wrong. 我不知道我在做什么错。 Thanks for any help. 谢谢你的帮助。

You cannot specify a column name in prepared statement like this, what you get is: 您不能在这样的准备好的语句中指定列名,得到的是:

SELECT MIN('some_column') AS min FROM test

Instead of: 代替:

SELECT MIN(some_column) AS min FROM test

So, your query selects the minimal value 'some_column' ... which is 'some_column' . 因此,您的查询选择了最小值'some_column' ...,即'some_column'

You could, instead, try that: 您可以尝试:

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

But this may lead to injection attacks. 但这可能导致注入攻击。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM