zyed Posté(e) le 20 décembre 2008 Partager Posté(e) le 20 décembre 2008 Bonjour a tous, j'ai un probleme avec ce code qui doit me permettre d'inserer a partir de deux zones de text des données dans une base mysql. voici le code: import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Client extends JFrame implements ActionListener{ private JButton bouton; public Client() {super(); build(); } private void build() {setTitle("interface"); setSize(300,300); setResizable(true); setContentPane(buildContentPane()); } private JPanel buildContentPane() { JPanel pane=new JPanel(); pane.setLayout(new FlowLayout()); JLabel label =new JLabel("nom"); JLabel labele= new JLabel("prenom"); JTextField txt=new JTextField(""); JTextField txte=new JTextField(""); txt.setColumns(10); txte.setColumns(10); JButton bouton=new JButton("valider"); pane.add(bouton); pane.add(txt); pane.add(txte); pane.add(label); pane.add(labele); bouton.addActionListener(this); return pane; } public void actionPerformed(ActionEvent e) {Object source=e.getSource(); Connection conn = null; Statement stat = null; ResultSet result = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Chargement du pilote Mysql réussi"); conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/client", "root", ""); stat = conn.createStatement(); if(source==bouton) { String QueryString="insert into CLIENTDUNORD('txt.getString()','txte.getString()')";} result.close(); stat.close(); conn.close(); } catch (SQLException se) { System.out.println("SQLException: " + se.getMessage()); System.out.println("SQLState: " + se.getSQLState()); System.out.println("VendorError: " + se.getErrorCode()); } catch (InstantiationException ie) { System.err.print("Erreur de chargement du pilote : "); System.err.println(ie.getMessage()); } catch (Exception ie) { //A gérer ie.printStackTrace(); } } public static void main(String[]args) { Client zied=new Client(); zied.setVisible(true);} } les erreurs sont les suivants: Chargement du pilote Mysql réussi java.lang.NullPointerException at Client.actionPerformed(Client.java:67) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) at javax.swing.DefaultButtonModel.setPressed(Unknown Source) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) j'ai besoin de votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 21 décembre 2008 Partager Posté(e) le 21 décembre 2008 Ca aiderait vachement si tu nous disais quelle est la ligne 67... Lien vers le commentaire Partager sur d’autres sites More sharing options...
BreizFenrir Posté(e) le 22 décembre 2008 Partager Posté(e) le 22 décembre 2008 Je pense qu'il s'agit de la ligne suivante : result.close(); Car cette variable est initialisée à null, et pas utilisée. Je sens le copier/coller mal compris... zyed, dans ton code tu n'as pas besoin d'un ResultSet vu que ta requête n'est pas un SELECT (ou un SHOW ou...). Ensuite, ta variable QueryString (en général on commence un nom de variable par une lettre minuscule, pour clairement différencier variables et classes) va contenir la chaîne suivante : insert into CLIENTDUNORD('txt.getString()','txte.getString()') J'imagine que ce n'est pas ce que tu veux. Je te conseillerais plutôt d'utiliser un PreparedStatement, de la façon suivante : /* Je ne sais pas si la casse importe pour MySQL, donc il se peut que ça foire. * Mais vu que je mets les mots-clefs SQL déjà tout en majuscule, le code est * plus lisible comme ça. */ String query = "INSERT INTO ClientDuNord VALUES (?, ?)"; PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, txt.getString()); stmt.setString(2, txte.getString()); /* La méthode suivante retourne le nombre d'enregistrements modifiés si cela * t'est une donnée utile. */ stmt.executeUpdate(); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.