2017-09-09 41 views
0

J'essaie d'utiliser MySQL auto_increment dans un programme Java. Mais je reçois ce type d'erreur:Comment utiliser les colonnes d'incrémentation automatique MySQL?

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

Voici mon programme:

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

Fonctionnement dans une application de ligne de commande. Tout d'abord, il devrait fonctionner à peu près exactement de la même manière * "dans le programme de swing java" *. –

+0

quelle colonne est incrémentation automatique, heure ou nom ou autre? –

+0

Veuillez indiquer la structure de la table que vous tentez d'insérer. Il serait plus facile à comprendre en tant qu'instruction CREATE mais assurez-vous que nous pouvons dire quelle colonne est une colonne auto_increment et les types de chaque colonne. – MER

Répondre

1

Vous avez oublié de lier le premier paramètre donc l'erreur. Vous ne définissez la valeur pour le 2ème paramètre

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

Vous devriez avoir une autre ligne dire qqch comme:

pst.setString(1, "ValueYouWant"); 

Ou

pst.setTimestamp(1, <function_that_returns_a_timestamp>); 

Selon le type de valeur est attendue pour cette colonne. Si vous ne souhaitez pas ajouter vous-même l'horodatage actuel, définissez la valeur par défaut de la colonne time sur CURRENT_TIMESTAMP dans la table.

+0

j'essaie cette ligne, mais il renvoie l'erreur –

+0

@rajeshdeva le problème peut être une déconnexion entre la structure de la table et les hypothèses de votre code est en train de faire. Je recommande fortement de mettre à jour votre question avec SQL de la table (une instruction CREATE fonctionnerait bien). Si vous ne savez pas comment obtenir le code SQL, décrivez la table et les colonnes aussi précisément que possible. – MER