Insérer des données dans access par java

Résolu/Fermé
donluxes Messages postés 21 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 juillet 2009 - 9 juin 2008 à 11:14
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 11 juin 2008 à 10:10
Bonjour,j'ai un code java qui permet de me connecter à une base access mais l'insertion dans la base de données ne marche pas mais quand j'initialise des valeurs dans mon programme l'insertion marche correctement par exemple dans mon programme vous verrai:NbIns = s.executeUpdate("INSERT INTO T_Destinations (NoDestination,LibDestination) VALUES (385,'libdest') ") ;
385 et libtest sont des valeurs initialisées.



mon problème se situe au niveau de la fonction private void ajouterClient()
comment entrer des valeurs saisies au clavier dans la base?



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.io.*;
public class AjoutClient1 extends JFrame implements ActionListener
{

JTextField txtnumdest,txtlibdest;
JButton btnAjout,btnEffacer,btnFermer;
public static void main(String[]args)
{
AjoutClient1 frame=new AjoutClient1();
}
public AjoutClient1()
{
Container c=this.getContentPane();
c.setLayout(new GridLayout(3,1));
JPanel panelcentre=new JPanel(new GridLayout(3,2));
JPanel panelbas=new JPanel(new FlowLayout());
JLabel titre=new JLabel("",SwingConstants.CENTER);
titre.setForeground(Color.red);
titre.setFont(new Font("TimesRoman",Font.ITALIC,30));
titre.setText("JAVA CORP.");
c.add(titre);
//zone de saisie pour le nom l'adresse et le telephone
txtnumdest=new JTextField();
txtlibdest=new JTextField();
//ajout des etiquettes et des zones de saisie au panel
panelcentre.add(new JLabel("Numéro Destination:",SwingConstants.RIGHT));
panelcentre.add(txtnumdest);
panelcentre.add(new JLabel("Libellé:",SwingConstants.RIGHT));
panelcentre.add(txtlibdest);
c.add(panelcentre);
//creer et ajoutter des boutons au panel de bas
btnAjout=new JButton("Ajouter");
btnEffacer=new JButton("Effacer");
btnFermer=new JButton("Fermer");
panelbas.add(btnAjout);
panelbas.add(btnEffacer);
panelbas.add(btnFermer);
c.add(panelbas);
//enregistrer le frame comme auditeur de bouton
btnAjout.addActionListener(this);
btnEffacer.addActionListener(this);
btnFermer.addActionListener(this);
this.setSize(300,200);
this.setTitle("Ajout de Client");
this.setVisible(true);
//creer une classe anonyme pour gerer la fermeture de la fenetre
this.addWindowListener(new WindowAdapter()
{
public void windoClosing(WindowEvent ev)
{
fermerFormulaire();
}
}
);
}//fin du constructeur
public void actionPerformed(ActionEvent e)
{
//déterminer si on cliqué sur un bouton
if(e.getSource()==btnAjout)
{
ajouterClient();

}
if(e.getSource()==btnEffacer)
{effacerFormulaire();}
if(e.getSource()==btnFermer)
{fermerFormulaire();}
}
//ajout
private void ajouterClient()
{

String url = "jdbc:odbc:bdvoyage";
Connection con = null;
try {
String libdest,numdest;
numdest=txtnumdest.getText();
libdest=txtlibdest.getText();
System.out.println(numdest+" "+libdest);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url,"","");
//insertion
Statement s = con.createStatement();
int NbIns ;
NbIns = s.executeUpdate("INSERT INTO T_Destinations (NoDestination,LibDestination) VALUES (385,'libdest') ") ;
System.out.println(NbIns+" ligne insérée");
JOptionPane.showMessageDialog(this,"ajouté");
con.close() ;
}catch(Exception e) {System.out.println("Exception");}
finally {
try {con.close();}
catch(SQLException e) {e.printStackTrace();}
}
effacerFormulaire();
}
//effacer
private void effacerFormulaire()
{
txtnumdest.setText("");
txtlibdest.setText("");
}

//fermer
public void fermerFormulaire()
{
this.setVisible(false);
System.exit(0);
}
}
A voir également:

1 réponse

sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723
9 juin 2008 à 11:25
Salut,

Soit:
1. tu utilises (comme c'est le cas à présent) une classe Statement (Statement s = con.createStatement(); ) et dans ce cas tu prendras soin de modifier le String SQL pour le construire dynamiquement à partir des valeurs saisies NbIns = s.executeUpdate("INSERT INTO T_Destinations (NoDestination,LibDestination) VALUES (385,'libdest') ") ; devra donc être remplacé par qqch du genre
String sqlStr = ""INSERT INTO T_Destinations (NoDestination,LibDestination) VALUES (";
sqlStr += getNoDestination();
sqlStr += ",'";
sqlStr += getLibDestination();
sqlStr += "')";

Ne pas oublier les quotes pour les valeurs de type String.
2. tu utilises un PreparedStatement et ton code devient
String sqlStr = "INSERT INTO T_Destinations (NoDestination,LibDestination) VALUES (?,?) ",
PreparedStatement ps = con.prepareStatement(sqlStr);
ps.setInt(1, getNoDestination());
ps.setString(2, getLibDestination());
ps.executeUpdate();

où, bien sûr, tu t'arranges pour avoir une getNoDestination() et une getLibDestination() retournant un int et un String correspondant aux valeurs saisies.

HTH,
++
1
merci
je vais tout de suite l'essayer.
0
donluxes Messages postés 21 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 juillet 2009
11 juin 2008 à 10:00
ça marche merci.
pour le tuyau!!!!!!!!!!!!!!!!!!!!
j'ai une autre préocupation .
comment générer l'exécutable java sans trainer tout le temps des codes à compiler?
0
sandul Messages postés 3927 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 723 > donluxes Messages postés 21 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 23 juillet 2009
11 juin 2008 à 10:10
Content pour toi :)

Il n'est pas possible de générer un exe en utilisant les outils fournis dans le JDK de Sun. Mais franchement, je ne vois pas trop l'intérêt de le faire, généralement créer un (ou plusieurs) jar(s) encapsulant les classes et ressources convient très bien.

Si, toutefois, tu veux générer des exe, il faut chercher un outil pour ce faire (voir si tu peux en dénicher un gratuit), il faudra faire une recherche:

https://www.google.fr/search?client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&channel=s&hl=fr&q=java+%22generate+an+exe%22&meta=&btnG=Recherche+Google&gws_rd=ssl

Comme je n'en ai pas encore utilisé, je ne puis t'en conseiller un.

A+
0