2012-07-05 36 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;查看数据库中表的名称,然后仔细检查名称。