Aller au contenu

insertion données dans mysql


zyed

Messages recommandés

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...