Bonjour, je fais un programme java, j'aimerais rendre ce programme
compatible avec les principaux outils SQL du marché (MySQL, Posgres,
Oracle, etc.).
J'aimerais savoir s'il existe des librairies ou si vous avez des
conseils pour faire en sorte que mon code JDBC soit portable.
Je me restreint au java.sql.* de bases dans mes objets, le peux changer
le pilote JDBC, mais le problème vient ensuite de mes requetes SQL, qui
ont parfois besoin d'etre traduites...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Trognon Patrice
Pif wrote:
Bonjour, je fais un programme java, j'aimerais rendre ce programme compatible avec les principaux outils SQL du marché (MySQL, Posgres, Oracle, etc.).
J'aimerais savoir s'il existe des librairies ou si vous avez des conseils pour faire en sorte que mon code JDBC soit portable.
Je me restreint au java.sql.* de bases dans mes objets, le peux changer le pilote JDBC, mais le problème vient ensuite de mes requetes SQL, qui ont parfois besoin d'etre traduites...
Avez vous des solutions à me proposer ?
merci !
Tant que tu restes SQL-92 pas de soucis cela sera compatible. Si jamais tu dois utiliser des syntaxes SQL proprio, isole les dans des sous classes qui vont se spécialiser sur le SGBDR ciblé.
-- Cordialement,
Patrice Trognon http://www.javadevel.com
Pif wrote:
Bonjour, je fais un programme java, j'aimerais rendre ce programme
compatible avec les principaux outils SQL du marché (MySQL, Posgres,
Oracle, etc.).
J'aimerais savoir s'il existe des librairies ou si vous avez des
conseils pour faire en sorte que mon code JDBC soit portable.
Je me restreint au java.sql.* de bases dans mes objets, le peux changer
le pilote JDBC, mais le problème vient ensuite de mes requetes SQL, qui
ont parfois besoin d'etre traduites...
Avez vous des solutions à me proposer ?
merci !
Tant que tu restes SQL-92 pas de soucis cela sera compatible.
Si jamais tu dois utiliser des syntaxes SQL proprio, isole les
dans des sous classes qui vont se spécialiser sur le SGBDR
ciblé.
Bonjour, je fais un programme java, j'aimerais rendre ce programme compatible avec les principaux outils SQL du marché (MySQL, Posgres, Oracle, etc.).
J'aimerais savoir s'il existe des librairies ou si vous avez des conseils pour faire en sorte que mon code JDBC soit portable.
Je me restreint au java.sql.* de bases dans mes objets, le peux changer le pilote JDBC, mais le problème vient ensuite de mes requetes SQL, qui ont parfois besoin d'etre traduites...
Avez vous des solutions à me proposer ?
merci !
Tant que tu restes SQL-92 pas de soucis cela sera compatible. Si jamais tu dois utiliser des syntaxes SQL proprio, isole les dans des sous classes qui vont se spécialiser sur le SGBDR ciblé.
-- Cordialement,
Patrice Trognon http://www.javadevel.com
Pif
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci !
tu connais un site qui référence les limites exactes du SQL 92 et
éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent,
qu'en est il d'un create ?
Les types et le autoincrement par exemple ne sont pas tous gérés pareil ?
J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment
passe par des mécanismes compliqués oracle ?
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci !
Trognon Patrice
Pif wrote:
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
Par une sequence, pareil en postgres, mais ca s'exploite d'une facon différente.
Perso tout ce qui est create n'est pas dans mon code java mais dans les scripts de création de la base, qui sont a coté en fait. Donc joués en prérequis d'utilisation du produit.
dans mon code je ne trouve donc que des requetes de type insert, update, delete, select.
Sur le select tu peux trouver des syntax sioux, par exemple chez Oracle.
Et l'exploitation des sequences n'est pas forcement toujours portable.
C'est ce code que j'isole dans des sous classes spécialisées, le role de chaque méthode de la sous classe spécialisé etant de me renvoyer la chaine contenant la bonne syntaxe sql.
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
Pif wrote:
tu connais un site qui référence les limites exactes du SQL 92 et
éventuellement pour le reste propose des traductions d'un SGBD à un autre
?
d'autre part, si pour un select ou insert peu de problemes se posent,
qu'en est il d'un create ?
Les types et le autoincrement par exemple ne sont pas tous gérés pareil ?
J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment
passe par des mécanismes compliqués oracle ?
Par une sequence, pareil en postgres, mais ca s'exploite d'une facon différente.
Perso tout ce qui est create n'est pas dans mon code java mais dans les
scripts de création de la base, qui sont a coté en fait. Donc joués
en prérequis d'utilisation du produit.
dans mon code je ne trouve donc que des requetes de type insert, update,
delete, select.
Sur le select tu peux trouver des syntax sioux, par exemple chez Oracle.
Et l'exploitation des sequences n'est pas forcement toujours portable.
C'est ce code que j'isole dans des sous classes spécialisées, le role
de chaque méthode de la sous classe spécialisé etant de me renvoyer
la chaine contenant la bonne syntaxe sql.
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
Par une sequence, pareil en postgres, mais ca s'exploite d'une facon différente.
Perso tout ce qui est create n'est pas dans mon code java mais dans les scripts de création de la base, qui sont a coté en fait. Donc joués en prérequis d'utilisation du produit.
dans mon code je ne trouve donc que des requetes de type insert, update, delete, select.
Sur le select tu peux trouver des syntax sioux, par exemple chez Oracle.
Et l'exploitation des sequences n'est pas forcement toujours portable.
C'est ce code que j'isole dans des sous classes spécialisées, le role de chaque méthode de la sous classe spécialisé etant de me renvoyer la chaine contenant la bonne syntaxe sql.
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
jlp
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci ! Tu peux utiliser aussi un mapping O/R comme par exemple Hibernate qui
propose un langage de requete orienté objet pivot ( HQL), le framework assurant la "traduction SQL" pour la base cible. Tous les grands SGBD sont supportés par Hibernate. ( http://www.hibernate.org ) On peut aussi utiliser comme mapping O/R, un FW O/R répondant à la norme JDO V2.0 qui inclut un langage de requete pivot normalisé JDO-QL. (http://www.versant.com/downloads)
Cela demande un investissement d'apprentissage non négligeable, mais quand on a compris cela facilite les développement surtout que ces frameworks sont accompagnés d'outils de développement. Pour JDO, Versant a mis Open Access en open-source dans un pluggin eclipse ( il y a une démo Flash sur leur site).
tu connais un site qui référence les limites exactes du SQL 92 et
éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent,
qu'en est il d'un create ?
Les types et le autoincrement par exemple ne sont pas tous gérés pareil ?
J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment
passe par des mécanismes compliqués oracle ?
merci !
Tu peux utiliser aussi un mapping O/R comme par exemple Hibernate qui
propose un langage de requete orienté objet pivot ( HQL), le framework
assurant la "traduction SQL" pour la base cible. Tous les grands SGBD
sont supportés par Hibernate. ( http://www.hibernate.org )
On peut aussi utiliser comme mapping O/R, un FW O/R répondant à la norme
JDO V2.0 qui inclut un langage de requete pivot normalisé JDO-QL.
(http://www.versant.com/downloads)
Cela demande un investissement d'apprentissage non négligeable, mais
quand on a compris cela facilite les développement surtout que ces
frameworks sont accompagnés d'outils de développement.
Pour JDO, Versant a mis Open Access en open-source dans un pluggin
eclipse ( il y a une démo Flash sur leur site).
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci ! Tu peux utiliser aussi un mapping O/R comme par exemple Hibernate qui
propose un langage de requete orienté objet pivot ( HQL), le framework assurant la "traduction SQL" pour la base cible. Tous les grands SGBD sont supportés par Hibernate. ( http://www.hibernate.org ) On peut aussi utiliser comme mapping O/R, un FW O/R répondant à la norme JDO V2.0 qui inclut un langage de requete pivot normalisé JDO-QL. (http://www.versant.com/downloads)
Cela demande un investissement d'apprentissage non négligeable, mais quand on a compris cela facilite les développement surtout que ces frameworks sont accompagnés d'outils de développement. Pour JDO, Versant a mis Open Access en open-source dans un pluggin eclipse ( il y a une démo Flash sur leur site).
Simon OUALID
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Je suis preneur aussi d'un site de référence pour le SQL "standard"...
A+
Symon
Pif wrote:
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci !
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et
les utiliser via SEQ.NEXTVAL !
Je suis preneur aussi d'un site de référence pour le SQL "standard"...
A+
Symon
Pif wrote:
tu connais un site qui référence les limites exactes du SQL 92 et
éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent,
qu'en est il d'un create ?
Les types et le autoincrement par exemple ne sont pas tous gérés pareil ?
J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment
passe par des mécanismes compliqués oracle ?
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Je suis preneur aussi d'un site de référence pour le SQL "standard"...
A+
Symon
Pif wrote:
tu connais un site qui référence les limites exactes du SQL 92 et éventuellement pour le reste propose des traductions d'un SGBD à un autre ?
d'autre part, si pour un select ou insert peu de problemes se posent, qu'en est il d'un create ? Les types et le autoincrement par exemple ne sont pas tous gérés pareil ? J'ai l'habiture du MySQL ... je crois me souvenir que l'auto increment passe par des mécanismes compliqués oracle ?
merci !
Pierre Gilquin
"Simon OUALID" a écrit dans le message de news:d6ak18$suo$
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Un peu hors java ! Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur actuelle. Comment faire avec mysql et son autoincrement pour récuperer la valeur généré?
"Simon OUALID" <symon@tatouage.fr> a écrit dans le message de
news:d6ak18$suo$1@apollon.grec.isp.9tel.net...
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et
les utiliser via SEQ.NEXTVAL !
Un peu hors java !
Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur
actuelle. Comment faire avec mysql et son autoincrement pour récuperer la
valeur généré?
"Simon OUALID" a écrit dans le message de news:d6ak18$suo$
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Un peu hors java ! Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur actuelle. Comment faire avec mysql et son autoincrement pour récuperer la valeur généré?
Trognon Patrice
Pierre Gilquin wrote:
"Simon OUALID" a écrit dans le message de news:d6ak18$suo$
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Un peu hors java ! Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur actuelle. Comment faire avec mysql et son autoincrement pour récuperer la valeur généré?
public int executeUpdate(String sql, int autoGeneratedKeys)
Parameters: sql - must be an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing autoGeneratedKeys - a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
public ResultSet getGeneratedKeys() throws SQLException
Retrieves any auto-generated keys created as a result of executing this Statement object. If this Statement object did not generate any keys, an empty ResultSet object is returned.
Returns: a ResultSet object containing the auto-generated key(s) generated by the execution of this Statement object
-- Cordialement,
Patrice Trognon http://www.javadevel.com
Pierre Gilquin wrote:
"Simon OUALID" <symon@tatouage.fr> a écrit dans le message de
news:d6ak18$suo$1@apollon.grec.isp.9tel.net...
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et
les utiliser via SEQ.NEXTVAL !
Un peu hors java !
Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur
actuelle. Comment faire avec mysql et son autoincrement pour récuperer la
valeur généré?
public int executeUpdate(String sql, int autoGeneratedKeys)
Parameters:
sql - must be an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing
autoGeneratedKeys - a flag indicating whether auto-generated keys should be made available for retrieval;
one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
public ResultSet getGeneratedKeys() throws SQLException
Retrieves any auto-generated keys created as a result of executing this Statement object.
If this Statement object did not generate any keys, an empty ResultSet object is returned.
Returns:
a ResultSet object containing the auto-generated key(s) generated by the execution
of this Statement object
"Simon OUALID" a écrit dans le message de news:d6ak18$suo$
Sous Oracle, point d'autoincrement ! Il faut utiliser des sequencess et les utiliser via SEQ.NEXTVAL !
Un peu hors java ! Dans Oracle , on peut utiliser la valeur seq.currval pour la valeur actuelle. Comment faire avec mysql et son autoincrement pour récuperer la valeur généré?
public int executeUpdate(String sql, int autoGeneratedKeys)
Parameters: sql - must be an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing autoGeneratedKeys - a flag indicating whether auto-generated keys should be made available for retrieval; one of the following constants: Statement.RETURN_GENERATED_KEYS Statement.NO_GENERATED_KEYS
public ResultSet getGeneratedKeys() throws SQLException
Retrieves any auto-generated keys created as a result of executing this Statement object. If this Statement object did not generate any keys, an empty ResultSet object is returned.
Returns: a ResultSet object containing the auto-generated key(s) generated by the execution of this Statement object