2012-05-16 3 views
-2

Пожалуйста, помогите мне в обнаружении ошибки синтаксиса, я попытался изо всех сил указать, но не могу.Sql INSERT в ошибку Statement

String sql= "insert into ctable (" 

     +"id," 
     +"name," 
     +"address," 
     +"phone," 
     +"email," 
     +"sale_Limit)" 

     + "values (" +txtid.getText()+ ",'" +txtname.getText()+ "','" +txtaddress.getText() 

     +"','" + txtphone.getText()+ "','"+ txtemail.getText()+ "','"+txtsaleLimit.getText() 

     + "')"; 
+2

Какое сообщение об ошибке вы получаете? – Erica

+1

Какая ошибка? – Chip

+0

Сообщение об ошибке: Синтаксис Ошибка при вставке в Statement. – codo

ответ

6

Проблема немедленная проблема вполне может отсутствовать.

Проблема больше заключается в том, что вы включаете данные непосредственно в свой SQL. Вместо этого вы должны использовать параметризованный SQL (через PreparedStatement), до avoid SQL injection attacks, отдельный код (SQL) из данных (значений) и избежать потери данных из-за преобразования строк.

+0

спасибо, что Jon за то, что поделился ссылкой, тоже нашел слишком много, чем ожидал. – codo

1

Забыл одинарные кавычки?

" +txtid.getText()+ " 
+1

id всегда является целым числом, которое не должно содержать ни одной кавычки – Nick

+0

, что если id является целым ... его ошибка sysntax ... .... –

+0

Ожидается, что это будет целочисленный идентификатор, поэтому это не будет проблемой. –

-1

INSERT INTO table_name (поле1, поле2, ... fieldN) ЗНАЧЕНИЯ (значение1, значение2, ... valueN);

Удалите перевернутые запятые и знак добавления из части названия поля.

+0

Вы заметили, что он строит строку в java? – Pablo

1

может быть, вам нужно пространство между "sale_Limit)" и "values"

+0

По крайней мере, это не так на SQL-сервере и оракуле, но я не пробовал с другими базами данных. – Pablo

-1

+ "sale_Limit)" - должно быть пространство, изменение:

+"sale_Limit) " 

"значения (" + txtid.getText() +», «» - отсутствие кавычек, чтобы изменить:

"values ('" +txtid.getText()+ ",'" 
+0

-1 дубликат других ответов и отсутствующая цитата закрытия (если были проблемы с кавычками) – Aprillion

4

name резервируется слово в доступе, так что вы должны изменить имя столбца других

.

В другой ответ указывают, я бы порекомендовал вам взглянуть на PreparedStatement, чтобы избежать возможных SQL Injection и PreparedStatement поможет вам избежать особого характера, а также, например, ' полукокса, в котором, чтобы избежать ошибки синтаксиса SQL.

Access reserved words.