ошибка с вставкой в ​​из MySQL - PullRequest
0 голосов
/ 26 марта 2012

Я новичок здесь, и у меня есть вопрос.

Я пытаюсь вставить строку в базу данных MySQL через Java. для Java-части я использую Netbeans.

при запуске я получаю следующую ошибку:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'VALUES01234567PietdeBakker0113605040java.util.GregorianCalendar [time = ?, areFields' в строке 1

код, который я придумал, следующий из DBObject.java:

 public void insertDeelnemer(Deelnemer d){
   String sql = "INSERT INTO deelnemer(OVnummer,Voornaam,Tussenvoegsel,Achternaam,Telefoonnummer,Geboortedatum) VALUES" + d.getOvnummer() + d.getVoornaam() + d.getTussenvoegsel() + d.getAchternaam() + d.getTelefoonnummer() + d.getGeboortedatum();
   try{
       stmt = conn.createStatement();
       stmt.executeUpdate(sql);

   }
   catch(Exception e){
       e.printStackTrace();
   }

, который идет с этим от DeelnemerToevoegen.java:

String OVnummer = OVnummerVak1.getText();
String Voornaam = VoornaamVak1.getText();
String Achternaam = AchternaamVak1.getText();
String Tussenvoegsel = TussenvoegselVak1.getText();
int dag = DagComboBox1.getSelectedIndex()+1;
int maand = MaandComboBox1.getSelectedIndex();
int jaar = JaarComboBox1.getSelectedIndex()+1980;
GregorianCalendar Geboortedatum = new GregorianCalendar(jaar, maand, dag);
String Telefoonnummer = TelefoonnummerVak.getText();
Deelnemer d = new Deelnemer(OVnummer, Voornaam, Achternaam, Tussenvoegsel, Geboortedatum, Telefoonnummer);
DBObject dbo = new DBObject();
dbo.insertDeelnemer(d);

Ответы [ 6 ]

1 голос
/ 26 марта 2012

Вам нужны скобки и запятые для ваших значений (и, вероятно, " для строковых значений):

Это синтаксис:

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
1 голос
/ 26 марта 2012

Вам нужны круглые скобки вокруг списка значений, а также запятая между ними. И, вероятно, кавычки вокруг каждого значения тоже.

0 голосов
/ 26 марта 2012

Попробуйте, чувак ....

String sql = "INSERT INTO deelnemer ( `OVnummer`,` Voornaam`, `Tussenvoegsel`,` Achternaam`, `Telefoonnummer`,` Geboortedatum`) VALUES ("+ String.valueOf (d.getOvnummer ()) +", "+ String.valueOf (d.getVoornaam ()) +", "+ String.valueOf (d.getTussenvoegsel ()) +", "+ String.valueOf (d.getAchternaam ()) + "," + String.valueOf (d.getTelefoonnummer ()) + "," + String.valueOf (d.getGeboortedatum ()) + ")";

0 голосов
/ 26 марта 2012

Просто напишите свою строку SQL в журнал, и вы, вероятно, увидите, что это не совсем корректный sql вообще.Вы просто объединяете все значения в непосредственной близости от слова values, что делает его чем-то вроде

"INSERT INTO deelnemer(OVnummer,Voornaam,Tussenvoegsel,Achternaam,Telefoonnummer,Geboortedatum) 
VALUES12345JanDeVreis061234567804099180"

, что является чистым НЕ действительным sql

0 голосов
/ 26 марта 2012

Синтаксис для INSERT:

INSERT INTO table ( column1, column2, ... ) VALUES( data1, data2, ... ) ;

Номера указанных столбцов и данных должны совпадать. И если вы вставите не числовые значения, вам придется заключить в кавычки '...' данные.

0 голосов
/ 26 марта 2012

Вам не хватает пробела между VALUES и ". Это должно быть VALUES " +. Кроме того, все значения должны быть разделены запятыми, а строки должны заключаться в кавычки, используя одинарные кавычки ('). Вот что вы получаете за то, что не используете параметризованные запросы ...

EDIT
Дополнительный совет: посмотрите на SQL-выражение Адриана. Если содержимое вашей sql переменной не выглядит так, если вы печатаете ее на консоль, вы не предоставляете действительный SQL.

...