This document in English.
L’utilisation de ce logiciel vous soumet à nos Conditions d’utilisation
jdbcDriverOOo fait partie d’une Suite d’extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.
Cette extension est la transcription en Java pur de l’API java.sql.* vers l’API com.sun.star.sdbc, com.sun.star.sdbcx et com.sun.star.sdb de UNO.
Elle vous permet d’utiliser le pilote JDBC de votre choix directement dans Base.
Elle embarque les pilotes pour les base de données suivantes:
Grâce aux pilotes fournissant un moteur de base de données intégré tels que: HsqlDB, H2, SQLite ou Derby, il est possible dans Base de créer et gérer très facilement des bases de données, aussi facilement que de créer des documents Writer.
Vous trouverez les informations nécessaires à la création d’une base de données avec ces pilotes dans la section: URL de connexion
Etant un logiciel libre je vous encourage:
Bref, à participer au developpement de cette extension.
Car c’est ensemble que nous pouvons rendre le Logiciel Libre plus intelligent.
jdbcDriverOOo est un pilote JDBC écrit en Java.
Son utilisation nécessite l’installation et la configuration dans LibreOffice d’un JRE version 11 ou ultérieure.
Je vous recommande Adoptium comme source d’installation de Java.
Si vous utilisez le pilote HsqlDB avec LibreOffice sous Linux, alors vous êtes sujet au dysfonctionnement #139538. Pour contourner le problème, veuillez désinstaller les paquets avec les commandes:
sudo apt remove libreoffice-sdbc-hsqldb
(pour désinstaller le paquet libreoffice-sdbc-hsqldb)sudo apt remove libhsqldb1.8.0-java
(pour désinstaller le paquet libhsqldb1.8.0-java)Si vous souhaitez quand même utiliser la fonctionnalité HsqlDB intégré fournie par LibreOffice, alors installez l’extension HyperSQLOOo.
Sous Linux et macOS les paquets Python utilisés par l’extension, peuvent s’il sont déja installé provenir du système et donc, peuvent ne pas être à jour.
Afin de s’assurer que vos paquets Python sont à jour il est recommandé d’utiliser l’option Info système dans les Options de l’extension accessible par:
Outils -> Options -> Pilotes Base -> Pilote JDBC -> Voir journal -> Info système
Si des paquets obsolètes apparaissent, vous pouvez les mettre à jour avec la commande:
pip install --upgrade <package-name>
Pour plus d’information voir: Ce qui a été fait pour la version 1.1.0.
Il semble important que le fichier n’ait pas été renommé lors de son téléchargement.
Si nécessaire, renommez-le avant de l’installer.
Redémarrez LibreOffice après l’installation.
Attention, redémarrer LibreOffice peut ne pas suffire.
soffice
et en utilisant la combinaison de touches Ctrl + C
si après l’arrêt de LibreOffice, le terminal n’est pas actif (pas d’invité de commande).Ceci explique comment utiliser une base de données HsqlDB.
Les protocoles pris en charge par HsqlDB sont: hsql://, hsqls://, http://, https://, mem://, file:// et res://.
Ce mode d’utilisation vous explique comment vous connecter avec les protocoles file:// et hsql://.
Dans LibreOffice / OpenOffice aller au menu: Fichier -> Nouveau -> Base de données
A l’étape: Sélectionner une base de données
A l’étape: Paramètres de connexion
file:///tmp/testdb;shutdown=true;hsqldb.default_table_type=cached;get_column_name=false
file:///c:/tmp/testdb;shutdown=true;hsqldb.default_table_type=cached;get_column_name=false
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:///tmp/testdb --silent false
java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:///c:/tmp/testdb --silent false
hsql://localhost/
A l’étape: Paramétrer l’authentification de l’utilisateur
Si la connexion a réussi, vous devriez voir cette fenêtre de dialogue:
Maintenant à vous d’en profiter…
Si vous souhaitez mettre à jour une base de données HsqlDB intégrée (un seul fichier odb), veuillez vous référer à la section: Comment migrer une base de données intégrée.
Il est possible de mettre à jour le pilote JDBC (hsqldb.jar, h2.jar, derbytools.jar) vers une version plus récente.
Si vous utilisez HsqlDB comme base de données, procédez comme suit:
SHUTDOWN COMPACT
ou SHUTDOWN SCRIPT
.Maintenant votre base de données est à jour.
Ce pilote permet dans LibreOffice / OpenOffice Base la gestion des utilisateurs, des rôles (groupes) et de leurs privilèges associés de la base de données sous jacente.
La gestion des utilisateurs de la base de données sous jacente est accessible dans Base par le menu: Administration -> Gestion des utilisateurs
La gestion des privilèges des utilisateurs de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Modifier les privilèges
Si le privilège est hérité d’un rôle assigné, la case à cocher est de type à trois états.
La gestion des rôles (groupes) de la base de données sous jacente est accessible dans Base par le menu: Administration -> Gestion des groupes
La gestion des utilisateurs membres du groupe de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Utilisateurs du groupe
La gestion des roles assignés au groupe de la base de données sous jacente est accessible dans cette fenêtre par le bouton: Roles du groupe
Cette fonctionnalité est une extension de l’API UNO et ne sera disponible que si le pilote LibreOffice / OpenOffice sous jacent le permet.
Certaines bases de données comme hsqlDB, H2, SQLite ou Derby permettent la création de la base de données lors de la connexion si cette base de données n’existe pas encore.
Cette fonctionnalité rend la création de bases de données aussi simple que celle de documents Writer. Généralement il suffit d’ajouter l’option attendue par le driver à l’URL de connexion.
Cette URL de connexion peut être différente selon le système d’exploitation de votre ordinateur (Windows, Linux ou MacOS).
Pour créer une base de données, dans LibreOffice allez dans le menu: Fichier -> Nouveau -> Base de données -> Connecter une base de données existante, puis selon votre choix:
file:///home/prrvchr/testdb/hsqldb/db;hsqldb.default_table_type=cached;create=true
C:\Utilisateurs\prrvc\testdb\hsqldb\db;hsqldb.default_table_type=cached;create=true
file:///home/prrvchr/testdb/h2/db
C:\Utilisateurs\prrvc\testdb\h2\db
file:///home/prrvchr/testdb/sqlite/test.db
C:/Utilisateurs/prrvc/testdb/sqlite/test.db
/home/prrvchr/testdb/derby;create=true
C:\Utilisateurs\prrvc\testdb\derby;create=true
LibreOffice 7.0.4.2 - Ubuntu 20.04 - LxQt 0.14.1
LibreOffice 6.4.4.2 - Windows 7 SP1
Je vous encourage en cas de problème
de créer un dysfonctionnement
J’essaierai de le résoudre
Ce pilote a été écrit pour contourner certains problèmes inhérents à l’implémentation UNO du pilote JDBC intégré dans LibreOffice / OpenOffice, à savoir:
Afin de profiter des dernières fonctionnalités offertes par les bases de données et entre autre HsqlDB, il était nécessaire d’écrire un nouveau pilote.
Jusqu’à la version 0.0.3, ce nouveau pilote n’est qu’une surcouche ou emballage (wrapper) en Python autour des services UNO fournis par le pilote LibreOffice / OpenOffice JDBC défectueux.
Depuis la version 0.0.4, il a été complètement réécrit en Java sous Eclipse, car qui mieux que Java peut donner accès à JDBC dans l’API UNO…
Afin de ne pas empêcher le pilote JDBC natif de fonctionner, il se charge lors de l’appel des protocoles suivants:
xdbc:*
xdbc:hsqldb:*
xdbc:sqlite:*
xdbc:mariadb:*
xdbc:...
mais utilise le protocole jdbc:*
en interne pour se connecter.
Il permet également d’offrir des fonctionnalités que le pilote JDBC implémenté dans LibreOffice ne fournit pas, à savoir:
La rédaction de ce pilote a été facilitée par une discussion avec Villeroy, sur le forum OpenOffice, que je tiens à remercier, car la connaissance ne vaut que si elle est partagée…
Utilisation de la nouvelle version de HsqlDB 2.5.1.
Beaucoup d’autres correctifs…
Ajout d’une boîte de dialogue permettant de mettre à jour le pilote (hsqldb.jar) dans: Outils -> Options -> Pilotes Base -> Pilote HsqlDB
Beaucoup d’autres correctifs…
Je tiens particulièrement à remercier fredt à hsqldb.org pour:
Son accueil pour ce projet et sa permission d’utiliser le logo HsqlDB dans l’extension.
Son implication dans la phase de test qui a permis de produire cette version 0.0.3.
La qualité de sa base de données HsqlDB.
Fonctionne désormais avec OpenOffice sous Windows.
Un protocole non pris en charge affiche désormais une erreur précise.
Une url non analysable affiche désormais une erreur précise.
Gère désormais correctement les espaces dans les noms de fichiers et les chemins.
Beaucoup d’autres correctifs…
Ecriture des services Statement
, PreparedStatement
, CallableStatement
, ResultSet
, ...
de JDBC (merci à hanya pour MRI qui m’a été d’une aide précieuse…)
Intégration dans jdbcDriverOOo des pilotes JDBC H2 et Derby en plus de HsqlDB. Implémentation de Services Java:
Afin de corriger d’éventuels défauts, ou incompatibilité avec l’API UNO, des pilotes JDBC embarqués.
Renommage du dépot et de l’extension HsqlDBDriverOOo en jdbcDriverOOo.
Prise en charge dans Base des clés primaires auto incrémentées pour HsqlDB, H2 et Derby.
Ecriture de com.sun.star.sdbcx.Driver. Ce pilote de haut niveau doit permettre la gestion des utilisateurs, des rôles et des privilèges dans Base. Son utilisation peut être désactivée via le menu: Outils -> Options -> Pilotes Base -> Pilote JDBC.
Implémentation d’un fournisseur de services Java UnoLogger.jar pour l’API SLF4J afin de pouvoir rediriger la journalisation des pilotes des bases de données sous-jacentes vers l’API UNO com.sun.star.logging.*.
Réécriture, en suivant le modèle MVC, de la fenêtre des Options, accessible par le menu: Outils -> Options -> Pilotes Base -> Pilote JDBC, pour permettre:
Ecriture, en suivant le modèle MVC, des fenêtres d’administration des utilisateurs et des rôles (groupes) et de leurs privilèges associés, accessible dans Base par le menu: Administration -> Gestion des utilisateurs et/ou Administration -> Gestion des groupes, permettant:
Ces nouvelles fonctionnalités n’ont étés testées pour l’instant qu’avec le pilote HsqlDB.
Intégration de SQLite JDBC version 3.42.0.0. Je tiens tout particulièrement à remercier gotson pour les nombreuses améliorations apportées au pilote SQLite JDBC qui ont rendu possible l’utilisation de SQLite dans LibreOffice/OpenOffice.
Ce pilote peut être enveloppé par un autre pilote (HyperSQLOOo ou SQLiteOOo) grâce à une url de connexion désormais modifiable.
Il est possible d’afficher ou non les tables système dans: Outils -> Options -> Pilotes Base -> Pilote JDBC -> Options du pilote UNO -> Afficher les tables système
Il est possible d’interdire l’utilisation de jeux de résultats actualisables dans: Outils -> Options -> Pilotes Base -> Pilote JDBC -> Options du pilote UNO -> Utiliser les bookmarks
De nombreuses corrections ont été apportées afin de rendre l’extension SQLiteOOo fonctionnelle.
Intégration de MariaDB Connector/J version 3.1.4.
Beaucoup d’autres correctifs…
Intégration de H2 version 2.2.220.
Intégration de la journalisation dans les jeux de résultat (ResultSetBase and ResultSetSuper) afin d’en savoir plus sur le dysfonctionnement 156512.
Beaucoup d’autres correctifs…
Support dans la création de tables du paramètre TypeInfoSettings permettant de récupérer la précision pour les types SQL:
Ceci n’est integré que pour le pilote HsqlDB pour le moment.
packaging
dans le pythonpath
de l’extension. Merci à artem78 d’avoir permis cette correction en signalant cet oubli dans le dysfonctionnement #4.pip install requirements.txt
INSERT INTO matable (Colonne1, Colonne2) VALUES (valeur1, valeur2), (valeur1, valeur2), ...
) dans une table disposant d’une clé primaire auto-incrémentée, de récupérer un ensemble de résultats à partir des lignes insérées dans la table et vous donne donc accès aux clés générées automatiquement en un seul coup.CREATE TABLE...
, ALTER TABLE...
) générées par jdbcDriverOOo sont désormais enregistrées dans la journalisation.java.sql.Statement.getGeneratedKeys()
et permet l’utilisation de l’interface com.sun.star.sdbc.XGeneratedResultSet.java.sql.Statement.getGeneratedKeys()
comme demandé par JDBC 4.1.IgnoreDriverPrivileges
dans le fichier Drivers.xcu.Normalement, je suis arrivé à couvrir toute l’étendue de l’API UNO (com.sun.star.sdbc, sdbcx et sdb), ce qui à pris pas mal de temps, mais je ne pensais pas au départ y arriver.
getTypeInfo()
, getTableTypes
et getTablePrivileges()
de l’interface java.sql.DatabaseMetaData en utilisant respectivement les propriétés TypeInfoSettings
, TableTypesSettings
et TablePrivilegesSettings
du fichier Drivers.xcu.TablePrivilegesSettings
est fournie par le pilote sous-jacent, seuls les privilèges déclarés dans cette propriété seront affichés. Cela permet une utilisation plus facile. Une demande d’amélioration #160516 a été faite afin d’intégrer cette fonctionalité dans le code de Base.Désormais l’API UNO SDBCX peut être utilisée pour la création de bases de données, comme c’est le cas pour les dernières versions des extensions utilisant jdbcDriverOOo. Il est possible de créer des tables, grâce à l’API UNO, avec les caractéristiques suivantes:
L’utilisation de l’API UNO pour créer des bases de données vous permettra d’utiliser du code indépendant de la base de données sous-jacente.
Les clients utilisant le pilote jdbcDriverOOo peuvent accéder aux fonctionnalités du pilote JDBC sous-jacent à l’aide de la méthode XDriver.getPropertyInfo() afin d’accéder au paramètre nécessaire lors de la création de tables et d’afficher correctement les privilèges. Ces paramètres étant accessibles directement par le pilote, peuvent être obtenus avant toute connexion, et permettent donc la création de la base de données lors de la première connexion.
Ajouter de nouvelles langues pour l’internationalisation…
Tout ce qui est bienvenu…