Oulala, je vais faire un test en local car c'est de la Prod là.
Je te tiens au courant
Oulala, je vais faire un test en local car c'est de la Prod là.
Je te tiens au courant
Ben j'espère que tu n'étais pas en train de faire des essais sur la base de prod !!!
Parce qu'une base Access est un simple fichier de données ... sans protection.
Ce n'est pas comme les bases MySQL, Sql Server etc ... auxquelles on n'a accès qu'en passant par le serveur de base de données qui vérifie l'intégrité des commandes.
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
On progresse, le compactage nous a permis de retirer les Warning du début :
WARNING:Error in the metadata of the table ChargeAffaire: table's row count in the metadata is 51 but 50 records have been found and loaded by UCanAccess. All will work fine, but it's better to repair your database.
WARNING:Error in the metadata of the table PlageHoraire: table's row count in the metadata is 0 but 5 records have been found and loaded by UCanAccess. All will work fine, but it's better to repair your database.
WARNING:Error in the metadata of the table Societe: table's row count in the metadata is 137 but 138 records have been found and loaded by UCanAccess. All will work fine, but it's better to repair your database.
Par contre il a l'air de faire une erreur.
Je m'explique, il m'affiche "erreur de connexion à la base de donnée", nous sommes donc dans le 2ème catch (SQLException ex):
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
88
89
90
91
92
93
94
95
96
97 java.sql.SQLClientInfoException at org.hsqldb.jdbc.JDBCConnection.setClientInfo(Unknown Source) at net.ucanaccess.jdbc.UcanaccessConnection.setClientInfo(UcanaccessConnection.java:684) at coactivite2.Connexion.<init>(Connexion.java:55) at coactivite2.Fenetre.<init>(Fenetre.java:39) at coactivite2.CoActivite2App.startup(CoActivite2App.java:19) at org.jdesktop.application.Application$1.run(Application.java:171) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:611) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source) ... 20 more Erreur de connexion à la base de données! java.sql.SQLClientInfoException Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at coactivite2.Zone.AffichageZone(Zone.java:179) at coactivite2.Fenetre$EcouteurFenetre.windowActivated(Fenetre.java:7959) at java.awt.Window.processWindowEvent(Window.java:1877) at javax.swing.JFrame.processWindowEvent(JFrame.java:274) at java.awt.Window.processEvent(Window.java:1823) at java.awt.Component.dispatchEventImpl(Component.java:4651) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:910) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:409) at java.awt.Component.dispatchEventImpl(Component.java:4523) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:616) at java.awt.EventQueue$2.run(EventQueue.java:614) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) at java.awt.SentEvent.dispatch(SentEvent.java:55) at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:183) at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:210) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:286) at java.awt.Component.dispatchEventImpl(Component.java:4523) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:616) at java.awt.EventQueue$2.run(EventQueue.java:614) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:616) at java.awt.EventQueue$2.run(EventQueue.java:614) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at coactivite2.ChargeAffaire.isAdmin(ChargeAffaire.java:312) at coactivite2.Fenetre$EcouteurFenetre.windowOpened(Fenetre.java:7900)
Sinon, pour nos essaies nous ne faisions que d'essayer une connexion, aucune modification donc pas de soucis. De plus j'ai fait un backup avant
Le message indique une sorte de mélange entre le driver ucanaccess et un autre driver de base de données : hsqldb (qui est un autre SGBD très différent d'Access)Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported
at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source)
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Bon ben on n'est pas au bout là
Après avoir regardé vite fait la doc de ucanaccess,
j'ai vu qu'il utilise en interne une base hsqldb pour ses propres besoins.
Il semble qu'il y ait un conflit avec la méthode setClientInfo
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Tu peux re-poster le code de la classe où ça plante ?
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Propose une vue project plutôt que FileSystem et quel est ton classpath, je pense que c'est là que le bât blesse
Code de class connexion :
Je ne te suis pas ehsavoie, c'est quoi la vue project ?
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 package coactivite2; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.*; public class Connexion { public static Connection con; public static String query; public static Statement stmt; public static ResultSet res; public static ResultSetMetaData metaBase; public Connexion() { String url = null; try { String fichier = "path/connexion.xml"; FileInputStream ips = new FileInputStream(fichier); InputStreamReader ipsr = new InputStreamReader(ips); BufferedReader br = new BufferedReader(ipsr); url = br.readLine(); br.close(); } catch (Exception e) { System.out.println(e.toString()); } try { Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); url = "path/xxx.mdb"; String url2= "jdbc:ucanaccess://"+url; System.out.println(url2); con = DriverManager.getConnection(url2,"xxx","xxx"); java.util.Properties prop = new java.util.Properties(); prop.put("charSet", "ISO-8859-1"); con.setClientInfo(prop); System.out.println("Connexion établie avec succès"); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); } catch (ClassNotFoundException ex) { ex.printStackTrace(); //System.err.println("Base de données non trouvée!"); System.err.println(ex); } catch (SQLException ex) { ex.printStackTrace(); System.err.println("Erreur de connexion à la base de données!"); System.err.println(ex); } } public static ResultSet rechercher(String query) { try { res=stmt.executeQuery(query); System.out.println("Element trouvé"); } catch (SQLException ex) { System.err.println(ex); } return res; } public static void ajouter(String query) { try { stmt.executeUpdate(query); System.out.println("Element ajouté à la base"); } catch (SQLException e) { System.err.println(e.getMessage()); } } public static void modifier(String query) { try { stmt.executeUpdate(query); System.out.println("Element Modifié"); } catch (SQLException ex) { System.err.println(ex); } } public static void supprimer(String query) { try { stmt.executeUpdate(query); System.out.println("Element suprimé"); } catch (SQLException ex) { System.err.println(ex); } } public static void fermer() { try { res.close(); System.out.println("Base de données Fermée"); } catch (SQLException e) { System.out.println(e.getMessage()); } } }
Et mon ClassPath c'est quoi et où ?
Merci de ta contribution ehsavoie !
FYI, le résultat :
run:
jdbc:ucanaccess://path/xxx.mdb
java.sql.SQLClientInfoException
at org.hsqldb.jdbc.JDBCConnection.setClientInfo(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessConnection.setClientInfo(UcanaccessConnection.java:684)
at coactivite2.Connexion.<init>(Connexion.java:55)
at coactivite2.Fenetre.<init>(Fenetre.java:39)
at coactivite2.CoActivite2App.startup(CoActivite2App.java:19)
at org.jdesktop.application.Application$1.run(Application.java:171)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported
at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source)
... 20 more
Erreur de connexion à la base de données!
java.sql.SQLClientInfoException
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at coactivite2.Zone.AffichageZone(Zone.java:179)
at coactivite2.Fenetre$EcouteurFenetre.windowActivated(Fenetre.java:7959)
at java.awt.Window.processWindowEvent(Window.java:1877)
at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
at java.awt.Window.processEvent(Window.java:1823)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:910)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:409)
at java.awt.Component.dispatchEventImpl(Component.java:4523)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.SentEvent.dispatch(SentEvent.java:55)
at java.awt.DefaultKeyboardFocusManager$DefaultKeyboardFocusManagerSentEvent.dispatch(DefaultKeyboardFocusManager.java:183)
at java.awt.DefaultKeyboardFocusManager.sendMessage(DefaultKeyboardFocusManager.java:210)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:286)
at java.awt.Component.dispatchEventImpl(Component.java:4523)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.SequencedEvent.dispatch(SequencedEvent.java:101)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at coactivite2.ChargeAffaire.isAdmin(ChargeAffaire.java:312)
at coactivite2.Fenetre$EcouteurFenetre.windowOpened(Fenetre.java:7900)
at java.awt.Window.processWindowEvent(Window.java:1862)
at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
at java.awt.Window.processEvent(Window.java:1823)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Bon je pense qu'on est dans une sacrée histoire d'incompatibilité
Est ce que tout problème peut être résolu ? ^^
Quand tu utilises la classe Connexion, tu l'initialises une fois
et ensuite tu utilises les méthodes statiques pour accéder à la base.
Concernant Access, je ne sais pas si c'est une bonne idée d'essayer d'économiser sur le code de cette façon.
Les méthodes statiques sont dangereuses car elles ne libèrent pas les ressources utilisées.
Essaye de refaire ta classe bdddetest bien propre avec le code ci-dessous
pour qu'on soit sûr de l'endroit où se situe le problème :
C'est un peu bourrin de mettre des System.out.println mais bon avec ça on vérifie l'endroit où ça plante ...
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 import java.sql.*; public class bdddetest { public static void main(String[] args) { try{ System.out.println(System.getProperty("java.version")); Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); System.out.println("UcanaccessDriver chargé avec succès"); String url= "jdbc:ucanaccess://path/xxx.mdb"; System.out.println(url); Connection con = DriverManager.getConnection(url,"xxx","xxx"); System.out.println("Connexion établie avec succès"); java.util.Properties prop = new java.util.Properties(); prop.put("charSet", "ISO-8859-1"); con.setClientInfo(prop); System.out.println("charSet ajouté avec succès"); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); System.out.println("Statement créé avec succès"); String sql = "Select * From Playlist"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ System.out.println("\n"+rs.getString("Sr no")+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)); } rs.close(); stmt.close(); con.close(); }catch (Exception e){ e.printStackTrace(); } } }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Merci encore...
Sur cette base, je n'ai pas de passe mais j'ai tout de même laisser ce code.
Résultat :
run:
1.8.0_60
UcanaccessDriver chargé avec succès
jdbc:ucanaccess://C:/Users/Spiicky/Documents/NetBeansProjects/ConnexionBDD/Test.accdb
Connexion établie avec succès
java.sql.SQLClientInfoException
at org.hsqldb.jdbc.JDBCConnection.setClientInfo(Unknown Source)
at net.ucanaccess.jdbc.UcanaccessConnection.setClientInfo(UcanaccessConnection.java:684)
at bdddetest.main(bdddetest.java:20)
Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported
at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source)
... 3 more
BUILD SUCCESSFUL (total time: 0 seconds)
IMPORTANT : Ce teste est effectué sur mon pc portable win 10 64bits avec un access 2016.
Le soft de mon entreprise est dev sur un Win7 32bits.
on a encore le même blocage ici org.hsqldb.jdbc.JDBCConnection.setClientInfo(Unknown Source)
avec java.sql.SQLFeatureNotSupportedException: feature not supported
ce qui veut dire que l'ajout de l'encodage n'est pas supporté par ce driver.
Peux-tu vérifier en retirant le charset :
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 import java.sql.*; public class bdddetest { public static void main(String[] args) { try{ System.out.println(System.getProperty("java.version")); Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); System.out.println("UcanaccessDriver chargé avec succès"); String url= "jdbc:ucanaccess://C:/Users/Spiicky/Documents/NetBeansProjects/ConnexionBDD/Test.accdb"; System.out.println(url); Connection con = DriverManager.getConnection(url,"xxx","xxx"); System.out.println("Connexion établie avec succès"); // java.util.Properties prop = new java.util.Properties(); // prop.put("charSet", "ISO-8859-1"); // con.setClientInfo(prop); // System.out.println("charSet ajouté avec succès"); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); System.out.println("Statement créé avec succès"); String sql = "Select * From Playlist"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ System.out.println("\n"+rs.getString("Sr no")+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)); } rs.close(); stmt.close(); con.close(); }catch (Exception e){ e.printStackTrace(); } } }
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Cela fonctionnement parfaitement !!!
Résultat :
run:
1.8.0_60
UcanaccessDriver chargé avec succès
jdbc:ucanaccess://C:/Users/Spiicky/Documents/NetBeansProjects/ConnexionBDD/Test.accdb
Connexion établie avec succès
Statement créé avec succès
11 Roar Prism Katy Perry
22 Wake Me Up Avicii Avicii
33 Mirrors 20/20 Justin timberlac
44 Hello Seattle Ocean Eyes Owl City
BUILD SUCCESSFUL (total time: 0 seconds)
En essayant sur la bécane du boulot (sans les props):
run:
jdbc:ucanaccess://path/xxx.mdb
Connexion établie avec succès
java.lang.UnsupportedOperationException: Cannot write indexes of this type due to unsupported collating sort order SortOrder[1036(0)] for text index (Db=xxx.mdb;Table=Annexe;Index=1)
at com.healthmarketscience.jackcess.impl.IndexData$ReadOnlyColumnDescriptor.writeNonNullValue(IndexData.java:1839)
at com.healthmarketscience.jackcess.impl.IndexData$ColumnDescriptor.writeValue(IndexData.java:1523)
at com.healthmarketscience.jackcess.impl.IndexData.createEntryBytes(IndexData.java:1244)
at com.healthmarketscience.jackcess.impl.IndexData.prepareAddRow(IndexData.java:581)
at com.healthmarketscience.jackcess.impl.IndexData.prepareAddRow(IndexData.java:559)
at com.healthmarketscience.jackcess.impl.TableImpl.addRows(TableImpl.java:1599)
at com.healthmarketscience.jackcess.impl.TableImpl.addRow(TableImpl.java:1462)
at net.ucanaccess.converters.UcanaccessTable.addRow(UcanaccessTable.java:44)
at net.ucanaccess.commands.InsertCommand.insertRow(InsertCommand.java:101)
at net.ucanaccess.commands.InsertCommand.persist(InsertCommand.java:148)
at net.ucanaccess.jdbc.UcanaccessConnection.flushIO(UcanaccessConnection.java:315)
at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:205)
at net.ucanaccess.jdbc.AbstractExecute.executeBase(AbstractExecute.java:161)
at net.ucanaccess.jdbc.ExecuteUpdate.execute(ExecuteUpdate.java:50)
at net.ucanaccess.jdbc.UcanaccessStatement.executeUpdate(UcanaccessStatement.java:220)
at coactivite2.Annexe.recupererIdAnnexeCree(Annexe.java:203)
at coactivite2.Fenetre$EcouteurFenetre.windowOpened(Fenetre.java:7910)
at java.awt.Window.processWindowEvent(Window.java:1862)
at javax.swing.JFrame.processWindowEvent(JFrame.java:274)
at java.awt.Window.processEvent(Window.java:1823)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
UCAExc:::3.0.6 Cannot write indexes of this type due to unsupported collating sort order SortOrder[1036(0)] for text index (Db=xxx.mdb;Table=Annexe;Index=1)
UCAExc:::3.0.6 connection exception: closed
UCAExc:::3.0.6 connection exception: closed
Bon, c'est déjà ça !
Maintenant essaye avec toutes les autres tables de la base car Playlist n'a peut-être pas d'index.
Pour rappel, on avait un message d'erreur "unsupported collating sort order" sur les index.
EDIT : je n'avais pas vu ton dernier message
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Avec la classe bdddetest ?En essayant sur la bécane du boulot (sans les props):
Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)
Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/
Pour l'unsupported collating sort order c'est expliqué sur SO https://stackoverflow.com/questions/...base-from-java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager