2013-08-04 2 views
-1

Привет, я пытаюсь вставить значение в таблицу из другой таблицы в моей базе данных, сравнивая значения в моей таблице с переменной, которую я захватил у пользователей из идентификационного номера.Отсутствует точка с запятой (;) в конце SQL-запроса

Я получаю следующее сообщение об ошибке:

java.sql.SQLException: [Microsoft] [ODBC Microsoft Access Driver] Missing точкой с запятой (;) в конце SQL заявления.

Вот код, который я использовал, чтобы попытаться выше:

Statement stmt1 = con.createStatement(); 

    String mySqlStatement1 = "INSERT INTO Entrant_Group VALUES (Group_Description) WHERE Group_MinAge <= " + details.getAge() + "AND Group_MaxAge >= " + details.getAge() + "AND Group_Gender = 'details.getGender()'"; 
    stmt1.executeUpdate(mySqlStatement1); 
+4

Почему вы не ставите точку с запятой в конце инструкции SQL? – tbodt

+0

Просто добавьте Semikolon до конца – MinecraftShamrock

+3

@donthedestroyer: Я никогда не слышал о инструкции INSERT с предложением WHERE. Что именно вы пытаетесь достичь? – Codo

ответ

3

Оставив стандартные предупреждения о инъекции SQL атак в сторону на данный момент, проблема с вашим утверждением, что вы кладете ваши цитаты неправильно и Дон» т пробелов перед вашими AND с:

String mySqlStatement1 = "INSERT INTO Entrant_Group VALUES (Group_Description) WHERE Group_MinAge <= " 
+ details.getAge() 
+ " AND Group_MaxAge >= " // Add space 
+ details.getAge() 
+ " AND Group_Gender = '" // Add space 
+ details.getGender()  // This part was enclosed in double-quotes 
+ "';";     // Add semicolon at the end 

для предотвращения атак инъекций следует параметризовать запрос и привязать значение параметров подготовленной инструкции:

String mySqlStatement1 = "INSERT INTO Entrant_Group VALUES (Group_Description) WHERE Group_MinAge <= ? AND Group_MaxAge >= ? AND Group_Gender = ?;"; 
+1

Это идет в правильном направлении. Но вам также нужны пробелы перед AND. – Codo