Connexion BD et un button

Résolu
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008 - 28 juil. 2008 à 15:06
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008 - 11 août 2008 à 17:25
Salut tous.
j ai etabli un programme en java avec quatre champ de text (JTextField) et une base de donnšŠe access mais cliquant sur le button ajout pour ajouter le nom, prenom,adresse,moyenne ; il me genere l erreur suivante:SQL Error:java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access] Trop peu de paramè?res. 4 attendu. -3010 07001

Je serais content si quelquun essaie de m aider.
Merci d avance

import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class ajout1 extends JFrame implements ActionListener{
ResultSet resultset;
MenuBar m11;
Menu m21;
MenuItem mi11;
MenuItem mi21;
JTextField ch1 = new JTextField(12);
JButton b2 = new JButton("Ajouter");
JTextField ch2 = new JTextField(12);
JLabel nom = new JLabel("Nom");
JTextField ch3 = new JTextField(12);
JLabel prenom = new JLabel("prenom");
JTextField ch4 = new JTextField(12);
JLabel adresse = new JLabel("adresse");
JLabel moyenne = new JLabel("moyenne");

public ajout1(){
super("Ajout");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(350,350);
JPanel pane = new JPanel();

m11 = new MenuBar();
m21= new Menu("Fichier");
mi11 = new MenuItem("Nouveau");
mi21 = new MenuItem("Ajout");
mi11.addActionListener(this);
mi11.setShortcut(new MenuShortcut(KeyEvent.VK_O));
m11.add(m21);
m21.add(mi11);
m21.addSeparator();
pane.add(ch1);
m21.add(mi21);
b2.addActionListener(this);
b2.setText("Ajouter");
this.add(b2);
pane.add(b2);
mi21.addActionListener(this);
setMenuBar(m11);
pane.add(nom);
pane.add(ch2);
pane.add(prenom);
pane.add(ch3);
pane.add(adresse);
pane.add(ch4);
pane.add(moyenne);


setContentPane(pane);

}
public static void main(String[]arguments){
ajout1 st1 = new ajout1();
st1.setVisible(true);
}
public void actionPerformed(ActionEvent evt){


Object Source = evt.getSource();
if(Source == b2){
System.out.println("Teste ");
insertion();

}

}
private void insertion() {

String data ="jdbc:odbc:vraiconnexion";
try {
String prenom,nom,adresse,moyenne;
prenom = ch1.getText();
nom = ch2.getText();
adresse = ch3.getText();
moyenne = ch4.getText();
Connection conn = DriverManager.getConnection(data);
Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO Table1 VALUES ("+ nom +"," + prenom+ "," + adresse + "," + moyenne + ")");
st.close();

}
catch(SQLException s){

System.out.println("SQL Error:" + s.toString() +" "

+ s.getErrorCode() + " " + s.getSQLState());

}catch (Exception e){

System.out.println("Error: " + e.toString() + e.getMessage());
}
}

}

7 réponses

jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
2 août 2008 à 22:37
salut
je pense ke tu n'as pas remarqué la ligne suivante (où j'ai mis les modifications en rouge  et j'ai deja mentionné ke tu as des erreurs de compatibilité de type) :

st.executeUpdate("INSERT INTO Table1 VALUES ('"+ nom +"',
'" + prenom+ "','" + adresse + "
'," + moyenne + ")");

NB: Tous ce qui est de  type String dans la base de donneés tu le met entre ' ' dans ta requête ;

Bon courage
3
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008
4 août 2008 à 13:08
salut
Je suis trés content que tu m'aie aider. Merci encore une fois de plus
et bon courage.

a+
3
jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
29 juil. 2008 à 03:12
J'espere k'il  soit  une aide qui te poussera  de rechercher avant de poser ce genre de question  bien plus qu'elle soit utile
(Tjrs meme remarque : les utilisateurs de ce forums le rend  un espace passsif  où la redendance perssiste  , l'ambiguité des qustions , des problèmes archaique. )




Pour le code je sais pas ;est ce vraimant le problème du driver que tu as ;(je pense que la requetecontien aussi des erreurs de types )
//********
private void insertion( ) {

String data = "jdbc:odbc:vraiconnexion";

String NomDriver = sun.jdbc.odbc.JdbcOdbcDriver
try {

String prenom,nom,adresse,moyenne;

...
Class.forName(NomDriver);
Connection conn = DriverManager.getConnection(data);

Statement st = conn.createStatement();

st.executeUpdate("INSERT INTO Table1 VALUES ('"+ nom +"',

'

" + prenom+ "','" + adresse + "


'

," + moyenne + ")");

st.close();

 }catch(SQLException s){

....
}catch (Exception e){

...
}

}
///**********
Bon courage
0
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008
30 juil. 2008 à 11:51
Merci jiidou

Je te remercie du temps que tu as puis me consacrer  à me repondre.Je compte aller verifier ce doce sur ma machine.
Merci pour tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008
2 août 2008 à 19:52
Salut jiidou
J'ai essaie ce que vous m'avais dit de faire mais sans succés.Je vais vous expliquer le vif du sujet:


Au effet, j'ai deux classes, la première est la classe de la connexion qui marche sans probléme, dont voici le code:

import java.sql.*;


public class connexion{
 
public static void main(String[] arguments){


  String data ="jdbc:odbc:mabase3";


  try{


   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection conn = DriverManager.getConnection(data, "", "");
   Statement st = conn.createStatement();
   ResultSet rec = st.executeQuery("select * from Table3");
   System.out.println("Les nom de ma famille");
   while(rec.next()){
   System.out.println(rec.getString(1) + "\t"


   + rec.getString(2) + "\t"


   + rec.getString(3) + "\t"


   + rec.getString(4));
      }
   st.close();
     }catch(SQLException s){


   System.out.println("SQL Error:" + s.toString() +" "


   + s.getErrorCode() + " " + s.getSQLState());


      }catch (Exception e){
  
   System.out.println("Error: " + e.toString() + e.getMessage());
   
           
     
}
   }


}


La deuxième est classe dont j'ai des champs de texte (JTextField) dont voici le code:


Mon problème est le suivant:
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class ajout1 extends JFrame implements ActionListener{
 ResultSet rec;
 MenuBar m11;
 Menu m21;
 JTextField ch1 = new JTextField(12);
 JButton b2 = new JButton("Ajouter");
 JTextField ch2 = new JTextField(12);
 JLabel nom = new JLabel("Nom");
 JTextField ch3 = new JTextField(12);
 JLabel prenom = new JLabel("prenom");
 JTextField ch4 = new JTextField(12);
 JLabel adresse = new JLabel("adresse");
 JLabel moyenne = new JLabel("moyenne");
 
 public ajout1(){
  super("Ajout");
  setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  setSize(350,350);
  JPanel pane = new JPanel();
  
  m11 = new MenuBar();
  m21= new Menu("Fichier");
  m11.add(m21);
  
  m21.addSeparator();
  pane.add(ch1);
  
  b2.addActionListener(this);
     b2.setText("Ajouter");
  this.add(b2);
  pane.add(b2);
  
  setMenuBar(m11);
  pane.add(nom);
  pane.add(ch2);
  pane.add(prenom);
  pane.add(ch3);
  pane.add(adresse);
  pane.add(ch4);
  pane.add(moyenne);
  


  setContentPane(pane);
  
 }
public static void main(String[]arguments){
 ajout1 st1 = new ajout1();
 st1.setVisible(true);
}
public void actionPerformed(ActionEvent evt){
 
 
 Object Source = evt.getSource();
 if(Source == b2){
  System.out.println("Teste ");
  insertion();
  
  }  
 
}
private void insertion() {
 
 
 try {
  String data ="jdbc:odbc:mabase3";
  
  String nom = ch1.getText();
  String prenom = ch2.getText();
  String adresse = ch3.getText();
  String moyenne = ch4.getText();
  Connection conn = DriverManager.getConnection(data);
  Statement st = conn.createStatement();
  st.executeUpdate("INSERT INTO Table3 VALUES ("+ nom  +"," + prenom+ "," + adresse + "," + moyenne + ")");
  
  st.close();
   
  }
 catch(SQLException s){


  System.out.println("SQL Error:" + s.toString() +" "


  + s.getErrorCode() + " " + s.getSQLState());


     }catch (Exception e){
 
  System.out.println("Error: " + e.toString() + e.getMessage());
     }
  }


 }


Mais quand j'exécute ma classe connexion, elle affiche le contenu par contre quand j'exécute la seconde classe, elle s'affiche et quand je saisie les caractères intègres est à dire (1222), ces caractères vont directement dans la base de donnée (SQL Server 2000) mais par contre quand je saisie les caractères String (nom, prenom, adresse;moyenne) j'ai des erreurs de compilation.
C'est  ça mon probléme.
Execuses moi si vous pouvez m'aider je serais trés content.
Merci d'avance.



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




 
0
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008
6 août 2008 à 21:30
Salut jiidou
Finalement le programme a été compiler sans probléme.Merci pour tes conseils.
Mais il un petit probléme,je m'arrive pas à vider mes JTextField une fois les mons ajouter.
Comment je vais m'y prendre? Quel commande je vais utiliser pour celà?
Merci d'avance pour ça?
0
ilounga2002 Messages postés 7 Date d'inscription dimanche 17 décembre 2000 Statut Membre Dernière intervention 11 août 2008
11 août 2008 à 17:25
Salut à tous
Voici mon code de connexion?
import java.sql.*;


public class CoalTotal {
 
public static void main(String[] arguments){


  String data ="jdbc:odbc:mabase3";


  try{


   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
   Connection conn = DriverManager.getConnection(data, "", "");
   Statement st = conn.createStatement();
   ResultSet rec = st.executeQuery("select * from Table3");
   System.out.println("Les nom de ma famille");
   while(rec.next()){
   System.out.println(rec.getString(1) + "\t"


   + rec.getString(2) + "\t"


   + rec.getString(3) + "\t"


   + rec.getString(4));
      }
   st.close();
     }catch(SQLException s){


   System.out.println("SQL Error:" + s.toString() +" "


   + s.getErrorCode() + " " + s.getSQLState());


      }catch (Exception e){
  
   System.out.println("Error: " + e.toString() + e.getMessage());
   
           
     
}
   }


}


J'ai un probléme avec ce dernier car je n'arrive pas à afficher le contenu de ma base de donnée avec JTable, si quelqu'un à une idée, je lui démande de m'aider s'il vous plait.
Merci d'avance à vous
0
Rejoignez-nous