2012-07-05 56 views
2

我試圖做一個從表中選擇,這在我的數據庫與其他所有表工作正常,但是當我嘗試以下方法我收到一個錯誤:SELECT * FROM表拋出錯誤的JDBC

db.makeQuery("SELECT * FROM References"); 

的呼叫:

public ResultSet makeQuery(String query) throws Exception 
{ 
    preparedStatement = connect.prepareStatement(query); 
    resultSet = preparedStatement.executeQuery(query); 
    return resultSet; 

} 

然後引發以下錯誤:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 'References' at line 1 

我看起來很奇怪對我來說,因爲這個語句的工作:

db.makeQuery("select * from Products"); 

回答

8

References是SQL關鍵字,所以你最好避免它的表名。 (例如參見this documentation。)

正如Nishant所建議的那樣,如果您使用反引號將它們轉義出來,那麼您的可以使用在查詢中使用保留字。

相關問題:

+1

是的,改變表的名字做到了。謝謝! – Medo 2012-07-05 12:18:10

6

使用

db.makeQuery("SELECT * FROM `References`"); 

如果可以的話,效果更佳,避免是MySQL的關鍵字名。如aioobe

0

建議您可能拼寫錯誤表格的名稱。當MySQL無法找到您所指的表時,MySQL會發出此錯誤。使用SHOW TABLES;查看數據庫中表的名稱,然後仔細檢查名稱。