2011-04-22 118 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

查詢中文字的綁定工作,而不是關鍵字或標識符。如果您希望它是動態的,則需要使用另一種方法來清理排序字段。