2017-09-09 2 views
0

Ich versuche, MySQL auto_increment in einem Java-Programm zu verwenden. Aber ich bin immer diese Art von Fehlern:Wie arbeite ich mit MySQL Auto Increment-Spalten?

Sep 09, 2017 7:36:16 PM demosub jButton1ActionPerformed SEVERE: null 
java.sql.SQLException: No value specified for parameter 1 

Das ist mein Programm:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     String url = "jdbc:mysql://localhost:3306/anadha"; 
     String uname1 = "root"; 
     String password = "csrajesh"; 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection(url, uname1, password); 
     PreparedStatement pst = con.prepareStatement("INSERT into employee (time, name) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS); 
     pst.setString(2, nme.getText()); 
     pst.executeUpdate(); 
    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(demosub.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

Holen Sie es in einer Befehlszeilen-App arbeiten. zuerst sollte es dann ziemlich genau so funktionieren. "in java swing program" *. –

+0

Welche Spalte ist Autoinkrement, Zeit oder Name oder andere? –

+0

Geben Sie die Struktur der Tabelle an, in die Sie einfügen möchten. Es wäre am einfachsten zu verstehen, wie eine CREATE-Anweisung, aber stellen Sie sicher, dass wir erkennen können, welche Spalte eine Spalte auto_increment und die Typen jeder Spalte ist. – MER

Antwort

1

Sie haben vergessen, die ersten Parameter daher die Fehler zu binden. Sie stellen nur den Wert für den zweiten Parameter

pst.setString(2, nme.getText()); 

Sie eine andere Linie haben sollte sagen sth wie:

pst.setString(1, "ValueYouWant"); 

Oder

pst.setTimestamp(1, <function_that_returns_a_timestamp>); 

Je nachdem, welche Art von Wert für die erwartet wird, Säule.

Wenn Sie den aktuellen Zeitstempel nicht selbst hinzufügen möchten, setzen Sie den Spaltenstandardwert time auf CURRENT_TIMESTAMP in der Tabelle.

+0

Ich versuche diese Zeile, aber es gibt Fehler –

+0

@rajeshdeva das Problem kann eine Diskrepanz zwischen der Tabellenstruktur und den Annahmen Ihres Codes sein macht. Ich empfehle dringend, Ihre Frage mit SQL der Tabelle zu aktualisieren (eine CREATE-Anweisung würde gut funktionieren). Wenn Sie nicht sicher sind, wie Sie das SQL erhalten, beschreiben Sie die Tabelle und Spalten so genau wie möglich. – MER