2012-03-26 9 views
0

Ich bin neu hier und ich habe eine Frage.Fehler mit Einfügen in von Mysql

Ich versuche, eine Zeile in meiner MySQL-Datenbank über Java einzufügen. für den Java-Teil verwende ich Netbeans.

, wenn ich es laufen bekomme ich folgende Fehlermeldung:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Sie haben einen Fehler in der SQL-Syntax; Sie in die Bedienungsanleitung zu Ihrer MySQL-Server-Version entspricht, die für die richtige Syntax zu verwenden in der Nähe von ‚VALUESPietdeBakker0113605040java.util.GregorianCalendar [time = ?, areFields‘ at line 1

den Code kam ich mit dem folgenden von 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(); 
    } 

, die mit diesem von DeelnemerToevoegen.java geht:

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); 
+1

Erinnere dich an Bobby Tables ... http://bobby-tables.com/ –

+2

Hör auf herumzublödeln und benutze eine parametrisierte Abfrage. –

Antwort

-1

Sie ein Leerzeichen zwischen VALUES und " fehlt. Dies sollte VALUES " + sein. Außerdem müssen alle Werte durch Kommas getrennt sein und Zeichenfolgen müssen mit einem einfachen Anführungszeichen (') zitiert werden. Das ist, was Sie bekommen für nicht parametrisierte Abfragen mit ...

EDIT
Weitere Tipp: Schauen Sie sich Adrians SQL-Anweisung. Es sei denn, der Inhalt Ihrer sql -Variable sieht so aus, dass Sie kein gültiges SQL bereitstellen, wenn Sie es auf der Konsole ausgeben.

+0

so dass ich es so sagen: 'String sql = "INSERT INTO Deelnemer (OVnummer, Voornaam, Tussenvoegsel, achternaam, Telefoonnummer, Geburtsdatum) VALUES" + d.getOvnummer(), d.getVoornaam(), d.getTussenvoegsel(), d.getAchternaam(), d.getTelefonnummer(), d.getGeboortedatum() +; 'wenn ich das tue Netbeans sagen; erwartet für alle d.get-er –

+0

Nein, Sie sagen es so: 'String sql =" INSERT IN Deelnemer (...) VALUES ('"+ d.TeOvnummer() +' ','" + d. getVoornaam() + "'," + ... + ");"; '. Beachten Sie die Grundlagen der Java-Syntax. Es gibt ein streunendes '+' vor dem ';' und Sie haben immer noch keine korrekte SQL-Syntax. –

+0

ich sehe, ich bekomme den folgenden Fehler jetzt: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "java.util.GregorianCalendar [Zeit = ?, AreFieldsSet = false, AreAllFieldsSet = false, len 'in Zeile 1 entspricht. Jede Möglichkeit, das zu beheben .. ? –

1

Sie müssen Klammern um Ihre Werteliste sowie ein Komma zwischen den einzelnen. Und gibt wahrscheinlich auch jeden Wert an.

1

Sie müssen Klammern und Kommata für Ihre Werte (und wahrscheinlich " für die String-Werte):

Dies ist die Syntax:

INSERT INTO table_name (column1, column2, column3,...) 
VALUES (value1, value2, value3,...) 
0

Die Syntax für INSERT ist

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

Die Anzahl der angegebenen Spalten und Daten muss übereinstimmen. Und wenn Sie nicht numerische Werte einfügen, müssen Sie '...' die Daten angeben.

0

Schreiben Sie einfach Ihre SQL-Zeichenfolge in ein Protokoll, und Sie werden wahrscheinlich sehen, dass es gar nicht wirklich gültige SQL ist. Sie verketten nur die Werte alle gleich neben dem Wort values, die es so etwas wie

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

machen, die nicht gültige SQL

0

Versuchen Sie, diese Geck cleary ist ....

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())+")";