准备声明的问题

时间:2011-04-22 21:14:33

标签: java mysql jdbc

preparedStatement = connection.prepareStatement("select fname,lname, "
                    + "sportman_code,start,finish,salary,amount,number,pnumber "
                    + "from sportman,customer "
                    + "where customer.customer_code = "
                    + "sportman.customer_code order by ? limit ?,?");



            preparedStatement.setString(1, "fname");
            preparedStatement.setInt(2, 0);
            preparedStatement.setInt(3, 9);
            resultSet = preparedStatement.executeQuery();

订单不起作用。 为什么呢?

当我把fname改为?它工作正常。

"sportman.customer_code order by fname limit ?,?");

我该怎么做?

3 个答案:

答案 0 :(得分:2)

你的ORDER BY有效,但并不像你期望的那样。当你使用

 preparedStatement.setString(1, "fname");

它会像这样制作一个ORDER BY

 ORDER BY 'fname'

并不像你期望的那样

 ORDER BY fname

您问题中的代码就像按字母顺序排列M& Ms包

答案 1 :(得分:1)

您不能绑定表名或列名等标识符,只能绑定要插入,比较等的值

答案 2 :(得分:0)

绑定适用于查询中的文字,而不适用于关键字或标识符。如果您希望它是动态的,您将需要使用另一种方法来清理排序字段。