2012-01-16 1 views
-1

Я хочу обрабатывать базу данных MySQL с помощью JDBC из-за работы веб-службы Java. у меня есть:JDBC 1064 Ошибка синтаксиса SQL

stmt = conn.createStatement(); 

String query = "CREATE TABLE Basestations (Network_Id INT," 
        + "Basestation_Id INT, Signal_Strength DOUBLE," 
        + "Frequency DOUBLE, Network_Type VARCHAR(40), Max_Bitrate DOUBLE," 
        + "Guaranteed_Bitrate DOUBLE, Net_Load INT," 
        + "Provider VARCHAR(45), Range DOUBLE, X INT, Y INT," 
        + "Port INT, Charging VARCHAR(40), Active BOOLEAN);"; 

stmt.execute(query); 

создать свою таблицу, но это приводит к:

INFO: SQL Exception: INFO: State : 42000 INFO: Message: 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 'Range DOUBLE, X INT, Y INT,Port INT, Charging VARCHAR(40), Active BOOLEAN)' at line 1 INFO: Error : 1064

Что случилось с моим синтаксисом?

ответ

1

RANGE является reserved keyword is MySQL. Скорее окружают Range с помощью ` (backtick).

String query = "CREATE TABLE Basestations (Network_Id INT," 
        + "Basestation_Id INT, Signal_Strength DOUBLE," 
        + "Frequency DOUBLE, Network_Type VARCHAR(40), Max_Bitrate DOUBLE," 
        + "Guaranteed_Bitrate DOUBLE, Net_Load INT," 
        + "Provider VARCHAR(45), `Range` DOUBLE, X INT, Y INT," 
        + "Port INT, Charging VARCHAR(40), Active BOOLEAN);"; 
1

ДИАПАЗОН является MySQL reserved word. Используйте обратную ссылку '`', чтобы указать это имя поля.

+0

Я только что сказал это. –

+0

Я прочитал ваш ответ сразу после публикации;) Я могу удалить свой ответ, или мы можем попросить nikos принять ваш ответ. – Devart

+0

Это круто. Это показывает, что наши ответы являются законными. :-) –