Bonjour,

Voici mon problème :

J'ai créé une application test pour faire des essais de connexion entre ma Base de donnée access et mon code.
Tout fonctionne.
voici le code :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 
package programme_test;
import java.sql.*;
 
public class Programme_Test {
 
    static Connection cnx;
    static Statement st;
    static ResultSet rst;
 
 
 
    public static Connection connecterDB() throws ClassNotFoundException, SQLException{
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String dataSourceName = "BaseDeDonnee" + "";
            String dbURL = "jdbc:odbc:" + dataSourceName;
            Connection cnx =  DriverManager.getConnection(dbURL, "","");
            System.out.println("OK");
            return cnx;  
        }
        catch (Exception err) {
            System.out.println( "Error: " + err );
            return null;
        }
    }
 
    public  static void Ajouter_Image(String file_path,int color_percentage,String centered, int edge_complexity, int level){
        try{
            String query = "INSERT INTO Images VALUES('"+file_path+"',"+color_percentage+",'"+centered+"',"+edge_complexity+","+level+")";
            cnx = connecterDB();
            st=cnx.createStatement();
            st.executeUpdate(query);
            System.out.println("Ajouté");
            st.close();
            cnx.close();
        }
        catch (Exception err) {
            System.out.println( "Error: " + err );
        }
 
 
    }
 
    public static void Supprimer_Image(String path_file){
        try{
            String query = "DELETE FROM Images WHERE path_file=?";
            cnx = connecterDB();
            PreparedStatement ps =cnx.prepareStatement(query);
            ps.setString(1,path_file);
            ps.executeUpdate(query);
            System.out.println("Bien supprimé !");
            st.close();
            cnx.close();
        }
        catch (Exception err) {
            err.printStackTrace();
        }
    }
 
    public static void main(String[] args) throws SQLException{
 
        //Ajouter_Image("path1",65,"non", 80, 3);
        //Supprimer_Image("path1\\CIAO.jpg");
 
        try{
            cnx = connecterDB();
            st=cnx.createStatement();
            rst=st.executeQuery("SELECT * FROM Images");
 
            while(rst.next()){
                System.out.println(rst.getString("file_path"));
                System.out.println(rst.getInt("color_percentage"));
                System.out.println(rst.getString("centered"));
                System.out.println(rst.getInt("edge_complexity"));
                System.out.println(rst.getInt("level"));
            }
            rst.close();
            st.close();
            cnx.close();
        }
        catch (Exception err) {
            System.out.println( "Error: " + err );
        }
 
    }
}
Maintenant je veux connecter une autre application à cette même base de donnée.
J'ai donc copié exactement le même code mais ça ne fonctionne pas.
J'ai mis ma méthode "connecterDB()" dans ma classe et dans un bouton j'ai mis ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
try{
            cnx = connecterDB();
            st=cnx.createStatement();
            rst=st.executeQuery("SELECT * FROM images");
 
            while(rst.next()){
                System.out.println(rst.getString("file_path"));
                System.out.println(rst.getInt("color_percentage"));
                System.out.println(rst.getString("centered"));
                System.out.println(rst.getInt("edge_complexity"));
                System.out.println(rst.getInt("level"));
            }
            rst.close();
            st.close();
            cnx.close();
        }
        catch (Exception err) {
            err.printStackTrace();
        }
Et voici la trace :
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at applicationvisuelle.App.connecterDB(App.java:546)
at applicationvisuelle.App.Compare_Squares(App.java:925)
at applicationvisuelle.App.ShapesButton_Version4(App.java:1770)
at applicationvisuelle.App.access$1000(App.java:30)
at applicationvisuelle.App$11.actionPerformed(App.java:1634)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6535)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6300)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82
)

Je précise que ma deuxieme application n'a rien dans son "main" (mis a part l'exécution de ma classe) tandis que dans ma première application j'utilise le mail.
Est- ce que ce serait ça ?
Avez-vous une idée ? car le driver fonctionne très bien dans l'autre application...