Insérer des données dans access par java
Résolu
donluxes
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
sandul Messages postés 3927 Date d'inscription Statut Membre Dernière intervention -
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);
}
}
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:
- Insérer des données dans access par java
- Fuite données maif - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
1 réponse
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
Ne pas oublier les quotes pour les valeurs de type String.
2. tu utilises un PreparedStatement et ton code devient
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,
++
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,
++
je vais tout de suite l'essayer.
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?
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+