2

データベース内の他のすべてのテーブルで正常に機能するテーブルから選択しようとしていますが、次のことを試みるとエラーが発生します。

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");
4

3 に答える 3

8

Referencesは SQL のキーワードであるため、テーブル名には使用しない方がよいでしょう。(たとえば、このドキュメントを参照してください。)

Nishant が示唆しているように、予約語をバッククォートでエスケープすると、クエリで予約語を使用できます。

関連する質問:

于 2012-07-05T12:10:23.293 に答える
6

使用する

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

できれば、MySQL のキーワードである名前は避けてください。aioobeが示唆するように

于 2012-07-05T12:11:22.123 に答える
0

テーブルの名前のスペルが間違っている可能性があります。参照しているテーブルが見つからない場合、MySQL はこのエラーを返します。

SHOW TABLES;データベース内のテーブルの名前を確認し、名前を再確認するために使用します。

于 2012-07-05T12:11:50.973 に答える