2017-10-09 2 views
-5

Ceci est le code que j'exécute.Dans ce code, j'essaie de mettre à jour, y base de données avec les détails que je reçois à partir des zones de liste déroulante ..continuer à obtenir l'erreur: au moins un paramètre à l'instruction en cours n'est pas initialisé

private void SubmitActionPerformed(java.awt.event.ActionEvent evt) {          
    Connection connection; 
    try { 
     int flag=1; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } catch (Exception ex) { 
      System.out.println("Error"+ex); 
     } 
     connection = DriverManager.getConnection("jdbc:derby://localhost:1527/loginDB", "login_user" ,"root"); 
     String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)"; 
     PreparedStatement pt = connection.prepareStatement(query); 
     //Statement pt = connection.createStatement(); 
     pt.executeUpdate(); 
     ResultSet rs = pt.executeQuery("SELECT * FROM LOGIN_USER.FACULTY_DETAILS"); 
     while(rs.next()){ 
     if(rs.getString(1).equals(kapil.getText())){ 
     pt.setString(2, (String) javalec.getSelectedItem()); 
     pt.setString(3,(String)javacomm.getSelectedItem()); 
     pt.setString(4,(String)javaknow.getSelectedItem()); 
     pt.setString(5, (String) javabeh.getSelectedItem()); 
     pt.setString(6, (String) javanot.getSelectedItem()); 
     pt.setString(7, (String) javapun.getSelectedItem()); 
     pt.setString(8,javatext.getText()); 
     pt.executeUpdate(); flag=0;} 
     if(rs.getString(1).equals(ziaul.getText())){ 
     pt.setString(2, (String) oslec.getSelectedItem()); 
     pt.setString(3,(String)oscomm.getSelectedItem()); 
     pt.setString(4,(String)osknow.getSelectedItem()); 
     pt.setString(5, (String) osbeha.getSelectedItem()); 
     pt.setString(6, (String) osnote.getSelectedItem()); 
     pt.setString(7, (String) ospun.getSelectedItem()); 
     pt.setString(8,ostext.getText()); 
     pt.executeUpdate(); 
      flag=0;} 
     if(rs.getString(1).equals(saurabh.getText())){ 
     pt.setString(2, (String) daalec.getSelectedItem()); 
     pt.setString(3,(String)daacomm.getSelectedItem()); 
     pt.setString(4,(String)daakno.getSelectedItem()); 
     pt.setString(5, (String) daabeh.getSelectedItem()); 
     pt.setString(6, (String) daanot.getSelectedItem()); 
     pt.setString(7, (String) daapun.getSelectedItem()); 
     pt.setString(8,daatext.getText()); 
     pt.executeUpdate(); 
      flag=0;} 
     if(rs.getString(1).equals(gayatri.getText())){ 
     pt.setString(2, (String) ecolec.getSelectedItem()); 
     pt.setString(3,(String)ecocomm.getSelectedItem()); 
     pt.setString(4,(String)ecokno.getSelectedItem()); 
     pt.setString(5, (String) ecobeh.getSelectedItem()); 
     pt.setString(6, (String) econot.getSelectedItem()); 
     pt.setString(7, (String) ecopun.getSelectedItem()); 
     pt.setString(8,ecotext.getText()); 
     pt.executeUpdate(); 
      flag=0;} 
     if(rs.getString(1).equals(tasleem.getText())){ 
     pt.setString(2, (String) clec.getSelectedItem()); 
     pt.setString(3,(String)ccomm.getSelectedItem()); 
     pt.setString(4,(String)cknow.getSelectedItem()); 
     pt.setString(5, (String) cbeh.getSelectedItem()); 
     pt.setString(6, (String) cnote.getSelectedItem()); 
     pt.setString(7, (String) cpun.getSelectedItem()); 
     pt.setString(8,ctext.getText()); 
     pt.executeUpdate(); 
      flag=0;} 
     if(rs.getString(1).equals(saurabhs.getText())){ 
     pt.setString(2, (String)graplec.getSelectedItem()); 
     pt.setString(3,(String)grapcomm.getSelectedItem()); 
     pt.setString(4,(String)grapknow.getSelectedItem()); 
     pt.setString(5, (String) grapbeh.getSelectedItem()); 
     pt.setString(6, (String) grapnot.getSelectedItem()); 
     pt.setString(7, (String) grappun.getSelectedItem()); 
     pt.setString(8,graphtext.getText()); 
     pt.executeUpdate(); 
      flag=0;} 
     if(rs.getString(1).equals(sanjay.getText())){ 
     pt.setString(2, (String) softlec.getSelectedItem()); 
     pt.setString(3,(String) softcomm.getSelectedItem()); 
     pt.setString(4,(String) softknow.getSelectedItem()); 
     pt.setString(5, (String) softbeh.getSelectedItem()); 
     pt.setString(6, (String) softnot.getSelectedItem()); 
     pt.setString(7, (String) softpun.getSelectedItem()); 
     pt.setString(8,softtext.getText()); 
     pt.executeUpdate(); 
     flag=0; 
     } 
     if(flag==0){ 
     JOptionPane.showMessageDialog(null,"Feedback Submitted Successfully"); 
     } 
     } 

    } catch (SQLException ex) { 
     Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); 
    }         
}          

Voici le code que je me sers me aider .. s'il vous plaît Je suis en train d'exécuter le code que j'ai donné, mais il continue à me donner l'erreur « au moins un paramètre à l'instruction en cours est non initialisée. " Alors, s'il vous plaît aider ...

+1

'pt.setString (1, ....)' ne se produit jamais dans votre code –

+0

S'il vous plaît aidez-moi à obtenir la solution .. ?? –

+1

Vous avez déjà une réponse à votre question ci-dessous. Vous ne pouvez pas exécuter une instruction avant de définir les valeurs comme expliqué par James_D. –

Répondre

1

SQL dans votre déclaration préparée a des marqueurs de paramètres:

String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)"; 

Ces paramètres doivent être configurés avant de pouvoir exécuter le SQL (il ne suffit pas de sens sans valeurs lieu du ?).

Cependant, vous essayez d'exécuter l'instruction sans réglage des paramètres:

PreparedStatement pt = connection.prepareStatement(query); 
    pt.executeUpdate(); 

qui se traduit par l'erreur que vous décrivez. Ce n'est pas vraiment clair ce que vous avez l'intention de faire en exécutant la déclaration à ce stade.

En outre, vous essayez d'utiliser le même objet instruction à la fois pour votre requête et pour votre mise à jour. Je ne crois pas que cela fonctionnera. Créer une déclaration distincte pour la requête:

PreparedStatement queryStatement = connection.prepareStatement("SELECT * FROM LOGIN_USER.FACULTY_DETAILS"); 
ResultSet rs = queryStatement.executeQuery(); 

Enfin, notez que les appels suivants à pt.executeUpdate(), dans les blocs if, se produisent également sans tous les paramètres étant réglés, puisque vous ne définissez numéro de paramètre 1 dans l'un de ces cas. Vous devrez également définir ce paramètre sur une valeur appropriée.

+0

réellement ce que je veux effectuer est que je veux vérifier si le nom de l'étiquette que même dans le nom dans la base de données puis insérer le suivant .So que dois-je faire si j'exécute requête plus tard .. –

+0

@SankalpSrivastava Vous exécutez déjà le "query" (qui n'est pas une requête, c'est un insert) plus tard. Je n'ai aucune idée pourquoi vous essayez également de l'exécuter avant d'avoir l'information dont vous avez besoin. –

+0

Ok s'il vous plaît aidez-moi à me fournir le code d'écriture ou un indice –

1

Le problème ici est que vous préparez une instruction que vous utiliserez à l'avenir, après avoir défini les détails dont vous avez besoin. Ensuite, vous essayez d'exécuter un executeUpdate() qui s'attend à ce que les valeurs soient définies.

Solution: Retirez le executeUpdate() utilisé avant d'obtenir le ResultSet et définir des valeurs pour PreparedStatement.

private void SubmitActionPerformed(java.awt.event.ActionEvent evt) { 
    Connection connection; 
    PreparedStatement pt; 
    Statement st; 
    ResultSet rs; 
    try { 
    int flag = 1; 
    try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    } catch (Exception ex) { 
    System.out.println("Error" + ex); 
    } 
    connection = DriverManager.getConnection("jdbc:derby://localhost:1527/loginDB", "login_user", "root"); 
    String query = "INSERT into FACULTY_DETAILS (FACULTYNAME,LECTUREQUALITY,COMSKILLS,KNOWLEDGE,BEHAVIOUR,NOTESPROVIDED,PUNCTUALITY,SUGGESTION) values(?,?,?,?,?,?,?,?)"; 
    pt = connection.prepareStatement(query); 
    st = connection.createStatement(); 
    rs = st.executeQuery("SELECT * FROM LOGIN_USER.FACULTY_DETAILS"); 
    while (rs.next()) { 
    if (rs.getString(1).equals(kapil.getText())) { 
    pt.setString(2, (String) javalec.getSelectedItem()); 
    pt.setString(3, (String) javacomm.getSelectedItem()); 
    pt.setString(4, (String) javaknow.getSelectedItem()); 
    pt.setString(5, (String) javabeh.getSelectedItem()); 
    pt.setString(6, (String) javanot.getSelectedItem()); 
    pt.setString(7, (String) javapun.getSelectedItem()); 
    pt.setString(8, javatext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(ziaul.getText())) { 
    pt.setString(2, (String) oslec.getSelectedItem()); 
    pt.setString(3, (String) oscomm.getSelectedItem()); 
    pt.setString(4, (String) osknow.getSelectedItem()); 
    pt.setString(5, (String) osbeha.getSelectedItem()); 
    pt.setString(6, (String) osnote.getSelectedItem()); 
    pt.setString(7, (String) ospun.getSelectedItem()); 
    pt.setString(8, ostext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(saurabh.getText())) { 
    pt.setString(2, (String) daalec.getSelectedItem()); 
    pt.setString(3, (String) daacomm.getSelectedItem()); 
    pt.setString(4, (String) daakno.getSelectedItem()); 
    pt.setString(5, (String) daabeh.getSelectedItem()); 
    pt.setString(6, (String) daanot.getSelectedItem()); 
    pt.setString(7, (String) daapun.getSelectedItem()); 
    pt.setString(8, daatext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(gayatri.getText())) { 
    pt.setString(2, (String) ecolec.getSelectedItem()); 
    pt.setString(3, (String) ecocomm.getSelectedItem()); 
    pt.setString(4, (String) ecokno.getSelectedItem()); 
    pt.setString(5, (String) ecobeh.getSelectedItem()); 
    pt.setString(6, (String) econot.getSelectedItem()); 
    pt.setString(7, (String) ecopun.getSelectedItem()); 
    pt.setString(8, ecotext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(tasleem.getText())) { 
    pt.setString(2, (String) clec.getSelectedItem()); 
    pt.setString(3, (String) ccomm.getSelectedItem()); 
    pt.setString(4, (String) cknow.getSelectedItem()); 
    pt.setString(5, (String) cbeh.getSelectedItem()); 
    pt.setString(6, (String) cnote.getSelectedItem()); 
    pt.setString(7, (String) cpun.getSelectedItem()); 
    pt.setString(8, ctext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(saurabhs.getText())) { 
    pt.setString(2, (String) graplec.getSelectedItem()); 
    pt.setString(3, (String) grapcomm.getSelectedItem()); 
    pt.setString(4, (String) grapknow.getSelectedItem()); 
    pt.setString(5, (String) grapbeh.getSelectedItem()); 
    pt.setString(6, (String) grapnot.getSelectedItem()); 
    pt.setString(7, (String) grappun.getSelectedItem()); 
    pt.setString(8, graphtext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } else if (rs.getString(1).equals(sanjay.getText())) { 
    pt.setString(2, (String) softlec.getSelectedItem()); 
    pt.setString(3, (String) softcomm.getSelectedItem()); 
    pt.setString(4, (String) softknow.getSelectedItem()); 
    pt.setString(5, (String) softbeh.getSelectedItem()); 
    pt.setString(6, (String) softnot.getSelectedItem()); 
    pt.setString(7, (String) softpun.getSelectedItem()); 
    pt.setString(8, softtext.getText()); 
    pt.executeUpdate(); 
    flag = 0; 
    } 
    if (flag == 0) { 
    JOptionPane.showMessageDialog(null, "Feedback Submitted Successfully"); 
    } 
    } 

    } catch (SQLException ex) { 
    Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); 
    } finally { 
    if (rs != null) { 
    rs.close(); 
    } 
    if (st != null) { 
    st.close(); 
    } 
    if (pt != null) { 
    pt.close(); 
    } 
    if (connection != null) { 
    connection.close(); 
    } 
    } 
} 

Note: J'utilisé else if dans les lieux de if pour éviter les contrôles d'état en double. Et, enfin bloquer pour éviter les fuites de mémoire

+0

Après l'exécution de votre code, j'obtiens l'erreur suivante: Méthode 'executeQuery (String)' n'est pas autorisé sur l'instruction préparée. –

+0

@SankalpSrivastava Wierd! J'ai essayé le même code et ça a marché pour moi. Aucun problème! Il suffit de créer une instruction pour exécuter la requête pour vous. J'ai mis à jour la réponse dans le code pour le même. – Sridhar