Probleme connexion base de données access

nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005 - 22 févr. 2005 à 14:02
cs_valerio Messages postés 2 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 18 août 2005 - 18 août 2005 à 12:21
bonjour a tous,
Mon probleme :





je n'arrive pas a me connecter a ma base de données access. si vous savez m'aidé, please.





voila mon code


---------------------





import java.awt.*;


import java.sql.*;





class TEssaiBD


{


public TEssaiBD()


{


Connection con;


Statement stmt;


String url = "jdbc:odbc:Exemple";





System.out.println("chargement driver...");


try


{


class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //j'utilise ecclipse et il me met une erreur ici, il me souligne 'class'


System.out.println("le driver est chargé");


}


catch(Exception e)


{


System.out.println("Erreur driver");


}





System.out.println("Connexion a la base de données...");


try


{


con = DriverManager.getConnection(url,"","");


stmt = con.createStatement();


System.out.println("connexion = Ok");


}


catch(SQLException e)


{


System.out.println("erreur de connexion");


}





String query = "SELECT * FROM matable;";


ResultSet results;





results = stmt.executeQuery(query);





try


{


stmt.close();


con.close();


}


catch(SQLException e)


{


System.out.println("SQLException: " + e.getMessage());


}


}


}





public class EssaiBD


{


public static void main (String args[])


{


TEssaiBD tes = new TEssaiBD();


}


}





j'ai bien ajouté ma base de donnée dans les sources de données système :





j'ai ajouté le pilote Microsoft Access Driver (*.mdb)


nom de la source de données : j'ai mis Exemple


et j'ai selectionnée ma base de données qui s'appelle Exemple.mdb


ma base de données contient une table 'matable' avec 3 champs texte.





voila, je n'arrive vraiment pas a arranger ce problème, j'ai chercher partout mais sans solution .
si quelqu'un peut m'aider...





merciiiiiiiiiiiiiii

16 réponses

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
22 févr. 2005 à 15:55
Qu'est-ce qu'il te raconte comme erreur?

cid019
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
22 févr. 2005 à 16:23
sur eclipse, il ne me raconte pas d'erreur, il me souligne juste class.forname et il ne m'execute pas le code.

et je viens de compiler le code avec textpad et la il me met des erreurs qui n'ont pas lieu d'etre je crois

expected class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


'{' expected class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


expected System.out.println("le driver est chargé");


'catch' without 'try' catch(Exception e)


'try' without 'catch' or 'finally' try


'}' expected

voila,
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
22 févr. 2005 à 16:47
Je viens de comparer ton code est un code a moi.
La seule difference c'est le 'Class.forName'. Class c'est avec un 'c' majuscule c'est pour ca qu'il te trouve pas la base

cid019
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
22 févr. 2005 à 16:50
ah bon, okiiii,

je vais voir ca de suite.

je te remercie d'avoir pris de ton temps

a+
0

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

Posez votre question
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
22 févr. 2005 à 17:40
alors j'ai plus d'erreurs de compilation mais la j'ai une erreur lors
de l'execution du programme. apparemment, ya une erreur lors de la connexion
il ne me connecte pas a la base de données. je vous met le résultat de la
fenetre console.


chargement driver...
le driver est chargé
connexion a la base de données...
erreur de connexion
Exception in thread "main" java.lang.NullPointerException
at TEssaiBD.(init)(EssaiBD.java:40)
at EssaiBD.main(EssaiBD.java:63)


si ya quelqu'un qui peut m'aider


+++
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
22 févr. 2005 à 17:56
Dans ton url il faut qur tu mentionnes l'extension de ton fichier, ici en l'occurrence .mdb etant donne que c'est un base de donnees Access.
Je suis pas sur que ce soit ca, essaies tjs

cid019
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
22 févr. 2005 à 18:08
ben, non, c'est pas ca, j'ai toujours le meme message d'erreur dans la fenetre console
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
22 févr. 2005 à 19:27
j'ai affiché le message d'erreur qu'on me donnait a l'execution et ca donne ca:

erreur de connexion[Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié

donc, c'est une erreur dans les sources de données, mais je comprens pas, j'ai rajouté la base, j'ai peut etre fait une erreur kekpart.

vous faites comment vous? quand vous rajouter une base de données dans les sources de données?

dites moi etape par etape si possible comme ca, je verrai bien si j'ai fait une erreur.
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
23 févr. 2005 à 09:26
Ta source de données tu l'as rajouté en Utilisateur ou en Systeme?
Il faut la rajouter en Utilisateur.
Tu choisis Microsoft Access Driver, tu met le non de ta source, et tu indiques le chemin d'access.

cid019
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
24 févr. 2005 à 11:18
ben si, pour etre sur, je l'es rajouté en utilisateur et en systeme.

mais ca fonctionne toujours pas...

c'est peut etre un probleme de driver
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
24 févr. 2005 à 20:09
cid019

tu pourrais pas me donner un code pour se connecter a une base de données access qui fonctionne chez toi, si tu en a un bien sur, comme ca j'essaierai, parce que je sais pas mais c'est peut etre une erreur dans mon code...

je te remercie d'avoir pris de temps!!!

++
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
25 févr. 2005 à 09:46
En fait pour me connecter a ma base de données j'utilise une lecture de
fichier car je stocke le chemin d'acces a la base dans un fichier de
telle sorte que si la fichier contenant la base est déplacé je peux
aller le rechercher a partir du programme.



import java.io.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;



class configBase extends JDialog implements ActionListener

{

private JTextField pilote,connecte;

private JButton valider, fermer, choisir;



public configBase(JFrame f)

{

super(f,"Configuration de la connexion", true);

setSize(500,130);

String [] depart = Config.getConfiguration("configuration/config.conf", 2);



pilote = new JTextField();

connecte = new JTextField();

pilote.setText(depart[0]);

connecte.setText(depart[1]);



valider = new JButton("Valider");

fermer = new JButton("Fermer");

choisir = new JButton("Choisir un fichier Access");

choisir.addActionListener(this);

valider.addActionListener(this);

fermer.addActionListener(this);



JPanel saisie = new JPanel(new GridLayout(2,2,10,10));

saisie.add(new JLabel("Pilote :"));

saisie.add(pilote);

saisie.add(new JLabel("Chaîne de connexion :"));

saisie.add(connecte);



JPanel boutons = new JPanel();

boutons.add(valider);

boutons.add(fermer);

boutons.add(choisir);



Container ppal = new Container();

ppal.setLayout(new BorderLayout());

ppal.add(saisie, BorderLayout.CENTER);

ppal.add(boutons, BorderLayout.SOUTH);



setContentPane(ppal);

}



public void actionPerformed(ActionEvent e)

{

if(e.getSource() == fermer)

{

if (Gicize.bdd.configCorrecte())

setVisible(false);

else

System.exit(0);

}

else if(e.getSource() == valider)

{

String [] newConf = new String[2];

newConf[0] = pilote.getText().trim();

newConf[1] = connecte.getText().trim();

Config.setConfiguration(newConf, "configuration/config.conf");

if (Gicize.bdd.configCorrecte())

setVisible(false);

else

Gicize.main(new String[0]);

setVisible(false);

}

else if (e.getSource() == choisir)

{

JFileChooser chooser = new JFileChooser();

// Note: source for ExampleFileFilter can be found in FileChooserDemo,

// under the demo/jfc directory in the Java 2 SDK, Standard Edition.

ExampleFileFilter filter = new ExampleFileFilter();

filter.addExtension("mdb");

filter.setDescription("Base de données MS-Access");

chooser.setFileFilter(filter);

int returnVal = chooser.showOpenDialog(this);

if(returnVal == JFileChooser.APPROVE_OPTION)

try

{


String fich =
chooser.getSelectedFile().getCanonicalPath();

String [] newConf = new String[2];


newConf[0] =
"sun.jdbc.odbc.JdbcOdbcDriver";


newConf[1] =
"jdbc:odbc:DBQ="+fich+";DRIVER=Microsoft Access Driver (*.mdb)";


Config.setConfiguration(newConf,
"configuration/config.conf");

if (Gicize.bdd.configCorrecte())


Gicize.getFenetrePal().show();


setVisible(false);

}

catch(Exception ex)

{

System.out.println(ex);

}

}

}

}

// recupere et modifie la config

class Config

{

// récupère le contenu du fichier nommé config.conf

// ce fichier contient le pilote à utiliser, ainsi que le noms de la soure de données

// permet l'utilisation d'une base oracle...

public static String [] getConfiguration(String fich, int nb)

{

String [] res = new String [nb];

for (int i = 0; i < nb; i++)

res[i] = "";

try

{

FileReader file = new FileReader(fich);

int i = 0;

int c = 0;

while ((c=file.read())!=-1)

{

if (c == 10)

++i;

else if(c!=13)

res[i] = res[i]+(char)c;

}

file.close();

}

catch (Exception e)

{

}

return res;

}



public static void setConfiguration(String [] config, String fich)

{

try

{

String finale = new String("");

FileWriter file = new FileWriter(fich);

for (int i = 0; i < config.length; i++)

{

finale = finale + config[i]+(char)10+(char)13;

}

char [] tab = finale.toCharArray();

for(int i = 0; i< tab.length; ++i)

{

file.write((int)tab[i]);

}

file.close();

}

catch (Exception e)

{

}

}

}



Voila mainetant les fonctions testant la connexion



// pour se connecter à la bse via l'interface jdbc

public void Connecte()

{

String [] config = Config.getConfiguration("configuration/config.conf", 2);

try

{

Class.forName(config[0]);

c = DriverManager.getConnection(config[1], "", "");

}

catch (Exception ex)

{

new
Message("Problème de connection à la base" + ex, "Erreur fatale :",
JOptionPane.ERROR_MESSAGE);

System.exit(0);

}

}



// pour se deconnecter de la base à la fermerure du programme

public void Deconnecte()

{

try

{

c.close();

}

catch (Exception e)

{

new
Message("Problème à la déconnexion", "Erreur BdD :",
JOptionPane.ERROR_MESSAGE);

}

}

// test si la config est correcte

public boolean configCorrecte()

{

boolean res = true;

String[] config = Config.getConfiguration("configuration/config.conf", 2);

try

{

Class.forName(config[0]);

c = DriverManager.getConnection(config[1], "", "");

}

catch(Exception e)

{

res = false;

}

return res;

}



J'espere que c'est comprehensible

Bonne chance

cid019
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
25 févr. 2005 à 12:49
ok, merci beaucoup, je vais essayer ton code.

+++
0
nadddd Messages postés 35 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 23 octobre 2005
25 févr. 2005 à 18:46
voila, j'ai essayé ton code mais ca ne fonctionne pas...

je me disais que le probleme que j'avais était peut etre du a la variable d'environnement CLASSPATH?? est-ce que c'est possible?

j'avais lu quelque part que je devais rajouter le chemin du pilote odbc mais je ne sais pas ou se trouve ce dernier...

c'est la derniere question, promis
0
cs_valerio Messages postés 2 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 18 août 2005
18 août 2005 à 08:10
il parait que t' a oublier l'instruction de chargement du driver qui est le suivant Class.forName
0
cs_valerio Messages postés 2 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 18 août 2005
18 août 2005 à 12:21
pourré-je si possible avoir un lien qui peut me faciliter de comprendre le notion de fichier en java
merci a tous
0
Rejoignez-nous