2011-04-22 161 views
0
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 ?,?"); 

我该怎么做?

回答

1

不能绑定在如表名或列名,只是你要插入,比较值等

2

你的ORDER BY作品标识符,但并不像你期望它。当您使用

preparedStatement.setString(1, "fname"); 

它将使一个ORDER BY这样

ORDER BY 'fname' 

,而不是像您期望

ORDER BY fname 

然后在你的问题中的代码会像分拣包装的M & Ms按字母顺序排列

+0

+1为M&M图像。 – 2011-04-22 21:22:17

0

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