Pb de connexion entre java et access (et oui encore)

Résolu
LittleTab Messages postés 25 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 14 mars 2006 - 16 janv. 2006 à 19:36
amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 - 19 janv. 2006 à 13:16
Bonjour, je suis en train de créer un petit logiciel de gestion de stock et je voudrais passer par une base de données access, le problème est que je n'arrive pas à me connecter à celle ci, voici un code d'essai que j'ai créer tout simple (mais qui marche pas :( ):

import java.sql.*;


class EssaiBD {
public EssaiBD() {
String url = "jdbc:odbc:bd1";
Connection con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url,"","");
Statement requete = con.createStatement();
ResultSet resultat = requete.executeQuery("select * from client");
while(resultat.next()) {
String nom = resultat.getString("nom");
System.out.println("Nom :"+nom);
}
}
catch(Exception e) { System.out.println("Exception"); }
finally {
try {con.close();}
catch(SQLException e2) {e2.printStackTrace();}
}
}
}


public class Essai {
public static void main(String args[]) {
EssaiBD test = new EssaiBD();
}
}

Donc quand j'execute cette portion toute simple , j'ai le message d'erreur suivant :
Exception
Exception in thread "main" java.lang.NullPointerException
at EssaiBD.(Essai.java:19)
at Essai.main(Essai.java:27)

Alors voilà si quelqu'un pouvait me filer un ptit coup de main (j'ai chercher aussi sur le forum mais je n'y est pas trouver mon bonheur concernant les solutions proposées) Merci bcp !

3 réponses

amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 3
17 janv. 2006 à 00:38
bonjour , moi je met ma connexion dans ma Frame comme ca quand j'execute le programme , je me connect automatiquement à ma base mais bon sa reste un choix , et pour la commande con = DriverManager.getConnection(url,"",""); si t'as pas d'utilisateur et password c'est pas la pein de mettre les "" "",
je te donne un bout de code qui mache nikel chez moi (c'est toute une petite application avec la mise à jour pour la table client , et juste l'affichage pour la table produit qui est en relation avec la table clien par "id_clt") essay de creer la base et la referencé (paneau de configuration ,outil d'aministration ....... sous le nom "mehdi" ) wara!!!
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class pratique extends Frame
{
String table[][]=new String [100][4];
TextField tnum;
TextField tnom;
TextField tpre;
TextField tadr;
TextArea az;
TextArea meh;
int c=0;
int c2=0;
public pratique()
{
setLayout(null);
//Label
Label l1= new Label("num");
add(l1);
l1.setBounds(10,50,150,20);

Label l2=new Label("nom");
add(l2);
l2.setBounds(10,80,150,20);

Label l3=new Label("prénom");
add(l3);
l3.setBounds(10,110,150,20);

Label l5=new Label("adresse");
add(l5);
l5.setBounds(10,170,150,20);

//textefield
tnum=new TextField("");
add(tnum);
tnum.setBounds(180,50,150,20);

tnom=new TextField("");
add(tnom);
tnom.setBounds(180,80,150,20);

tpre=new TextField("");
add(tpre);
tpre.setBounds(180,110,150,20);

tadr=new TextField("");
add(tadr);
tadr.setBounds(180,170,150,20);


az=new TextArea();
add(az);
az.setBounds(100,260,350,100);

meh=new TextArea();
add(meh);
meh.setBounds(100,380,350,100);
//boutton

Button ajout=new Button("ajouter");
add(ajout);
ajout.setBounds(40,210,70,20);

Button effa=new Button("effacer");
add(effa);
effa.setBounds(110,210,70,20);

Button rech=new Button("recherche");
add(rech);
rech.setBounds(180,210,70,20);

Button mod=new Button("modifier");
add(mod);
mod.setBounds(250,210,70,20);

Button prem=new Button(" 1 ere ");
add(prem);
prem.setBounds(390,110,70,20);

Button suiv=new Button(">>>");
add(suiv);
suiv.setBounds(390,130,70,20);

Button prec=new Button("<<<");
add(prec);
prec.setBounds(390,150,70,20);

Button affi=new Button("affiche tout");
add(affi);
affi.setBounds(400,200,70,20);

setSize(500,600);
setVisible(true);

////////////////////////////////////////////////////////////////////////
ajout.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
s.executeUpdate(" insert into t values("+tnum.getText()+",'"+tnom.getText()+"','"+tpre.getText()+"','"+tadr.getText()+"')");
}
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez);
}
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);}
}
});

/////////////////////////////////////////////////////////////////////////
rech.addActionListener(new ActionListener()
{ public void actionPerformed(ActionEvent e)
{ try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
ResultSet aze=s.executeQuery(" select * from t where num ="+tnum.getText());

while(aze.next())
{
String k=aze.getString(1)+" "+aze.getString(2)+" "+aze.getString(3)+" "+aze.getString(4);
az.setText(k);
}
ResultSet aze1=s.executeQuery(" select * from p where num ="+tnum.getText());
String b="";
while(aze1.next())
{
b=b+'\n'+aze1.getString(2);
meh.setText(b);
}
}
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez);
}
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);}
} } );
//////////////////////////////////////////////////////////////////////
mod.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
s.executeUpdate(" update t set nom='"+tnom.getText()+"' where num ="+tnum.getText()); }
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez); }
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);} } } );
//////////////////////////////////////////////////////////////////////////

effa.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
s.executeUpdate(" delete from t where num ="+tnum.getText()); }
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez); }
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);} } } );
///////////////////////////////////////////////////////////////////////////////////

affi.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
ResultSet aze=s.executeQuery("select * from t");
String k="";
while(aze.next())
{
k=k+'\n'+aze.getString(1)+" "+aze.getString(2)+" "+aze.getString(3)+" "+aze.getString(4);
az.setText(k);}
}
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez);
}
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);}
} } );
///////////////////////////////////////////////////////////////////////
prem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
ResultSet aze=s.executeQuery("select * from t ");
while(aze.next()){
table[c][0]=aze.getString(1);
table[c][1]=aze.getString(2);
table[c][2]=aze.getString(3);
table[c][3]=aze.getString(4);
c=c+1;
}
tnum.setText(table[c2][0]);
tnom.setText(table[c2][1]);
tpre.setText(table[c2][2]);
tadr.setText(table[c2][3]);
ResultSet aze1=s.executeQuery(" select * from p where num ="+tnum.getText());
String b="";
while(aze1.next())
{
b=b+'\n'+aze1.getString(2);
meh.setText(b);
System.err.println("area=" + meh.getText());
}
}
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez);
}
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);}
}});
///////////////////////////////////////////////////////////////////////////////////
suiv.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try{
c2=c2+1;
if(c2==c)
{
c2=0;
}

tnum.setText(table[c2][0]);
tnom.setText(table[c2][1]);
tpre.setText(table[c2][2]);
tadr.setText(table[c2][3]);
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection dbcon = DriverManager.getConnection("jdbc:odbc:mehdi");
Statement s=dbcon.createStatement();
ResultSet aze1=s.executeQuery(" select * from p where num ="+tnum.getText());
meh.setText("");
String b="";
while(aze1.next())
{
b=b + "\n"+aze1.getString(2);
System.out.println("b=" + b);
if(b != null && b.trim().compareTo("") !=0){
meh.setText(b + "\n");
System.err.println("area=" + meh.getText());


}

}

}
catch(ClassNotFoundException ez)
{
System.out.print("message d'erreur 1 "+ez);
}
catch(SQLException ee){
System.out.print("message d'erreur 2 "+ee);}
}});
/////////////////////////////////////////////////////////////////////////////
prec.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
c2=c2-1;
if(c2<0){
c2=c;
}
tnum.setText(table[c2][0]);
tnom.setText(table[c2][1]);
tpre.setText(table[c2][2]);
tadr.setText(table[c2][3]);

}});
///////////////////////////////////////////////////////////////////////////
this.addWindowListener
(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
pratique.this.windowClosed();
} } );
}


protected void windowClosed()
{
//méthode pour la fermeture
System.exit(0);
}

public static void main(String[]args)
{
new pratique();
}
}
j'ai mis dans chaque boutton une connextion un statement .....c'est pas pratique alors à toi de minimisé ce code lol j'attend t'as reponse
3
LittleTab Messages postés 25 Date d'inscription jeudi 20 janvier 2005 Statut Membre Dernière intervention 14 mars 2006
17 janv. 2006 à 19:30
Merci bien pour ta solution ! En fait le problème venait simplement du fait que ma base n'était pas référencé ! En ce qui concernen ton code il a peut être moyen de le rendre un peu plus clair déjà tu devrais créer une classe pour ta connecxion dans ce style


public class BD {

Connection conn = null;
String url = "jdbc:odbc:bd1";

public void ouvrirConnection() {

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(url,"","");
//conn.close();
}
catch(ClassNotFoundException e) {
System.err.println("Driver non chargé !");
e.printStackTrace();
}
catch(SQLException ex) {
}
}

public Connection getConnection() {
return conn;
}
}

C'est tout bête mais ça évite d'être redondant ! Comme ça dans ton autre classe tu n'as qu'a crée une instance de cette classe et le tour est joué ! Maintenant moi je sais que pour faire mon programme java j'utilise le model MVC (Model Vue Controler) c'est ce que j'ai appris en cours denièrement et ça rend les choses bcp plus lisible car tu as une classe ou tu ne met que l'interface (la classe Vue) une autre classe ou tu met toutes les actions de tes boutons (la classe Controler) et une classe ou tu met toutes tes opérations la classe (Model) et ensuite tu n'as qu'a les faires communiquer entre elle et c'est tout bon !
Maintenant bon ton code marche et c'est l'essentiel je suis bien d'accord ! Encore merci à toi !
0
amylee1984 Messages postés 153 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 20 août 2006 3
19 janv. 2006 à 13:16
bonjour , merci pour ta reponse , c'est plus pratique, je vais essayer à divisier mon code
wora
0
Rejoignez-nous