IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Simple transaction java


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut Simple transaction java
    Bonjour;

    Je cherche à utiliser les trasactions (commit / rollback), j'ai essayé avc trois SGBD (MySQL, Oracle & Access), ça n'a marché qu'avec Access

    j'arrive pas à comprendre pourquoi !!
    voici une des tentatives avec MySQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void main(String[] args) {
    		try {
    			Connection conn = MaConnexion.getMaConnection("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/mabase", "user", "password");
    			conn.setAutoCommit(false);
    			conn.createStatement().execute("insert into personne values(1, 'SIMO')");
    			conn.rollback();
    		} catch (Exception e) {
    			System.out.println("Exception: "+e.getMessage());
    		}
    	}
    malgrè le rollback, l'insertion s'effectue !!
    j'ai entendu parlé des plugings qu'on peut ajouter dans MySQL, mais pourtant je pense pas que c'est necéssaire dans mon cas.

    Merci de vouloir m'aider, je suis ouvert à toute suggéstion.
    A+

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    ce code est correct et ne devrais poser aucun problème. Qu'y a-t-il dans getMaConnexion? et n'oublie pas le conn.close() !

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut
    C'est ce qu'il y a dans la méthode getMaConnection() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static Connection getMaConnection(String pilote, String url, String user, String pass)throws Exception{
    		Class.forName(pilote);
    		Connection conn = DriverManager.getConnection(url, user, pass);
    		return conn;
    	}
    Remarque:
    - j'ai ajouté conn.close(); et ça change rien !
    - ma version de MySQL est v5.1.36 inclut dans WampServer v2.0.

    Est ce que les Transactions sont cencés marché dans MySQL sans
    avoir à y ajouter un module externe (exp: plugins) ?

    Merci de vouloir m'aider.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    mysql comme oracle, bien heureusement, support sans problème les transactions! Et ce d'ailleurs indépendament du fait que l'auto commit soit actif ou pas. Que retourne connection.getTransactionIsolation() ?

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Tout dépend du moteur utilisé avec mysql.
    Innodb permet les transactions mais pas myisam par exemple.

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 87
    Points : 53
    Points
    53
    Par défaut
    merci fr1man merci tchize_
    la méthode conn.getTransactionIsolation() me donne 4
    J'aimerais savoir comment identifier mon moteur MySQL ? et quels sont (si vous permettez) les étapes pour integrer le plugins InnoDB dans MySQL (juste un résumé de la procédure si quelqu'un a déjà tenter avec, franchement je n'ai pas 60min pour lire un large tuto en anglais sur google ).

    merci bouceaup.

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Citation Envoyé par soufian1364 Voir le message
    merci fr1man merci tchize_
    la méthode conn.getTransactionIsolation() me donne 4
    J'aimerais savoir comment identifier mon moteur MySQL ? et quels sont (si vous permettez) les étapes pour integrer le plugins InnoDB dans MySQL (juste un résumé de la procédure si quelqu'un a déjà tenter avec, franchement je n'ai pas 60min pour lire un large tuto en anglais sur google ).

    merci bouceaup.
    4 = TRANSACTION_REPEATABLE_READ -> poit de vue jdbc il y a support de la transaction. Comme mentionné, myisam ne supporte pas les transaction, il faut donc créer une database innodb. Note qu'il n'y a pas de "plugin" à installer pour ça. C'est juste que, quand tu crée ta table mysql (commande create table), tu dois préciser que tu veux du storage innodb. Note qu'il doit y avoir une option quelque part dans la config de mysql pour préciser que tu veux du innodb par défaut.


    Pour tes tables déjà créé, la commande est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE uneTable ENGINE=InnoDB;
    pour les nouvelle table, ajouter à la fin du create table ENGINE=InnoDB

    Le plus simple, je pense, est d'effacer tes tables, de changer ta config de mysql pour mettre innodb par défaut et recréer tes tables sans te soucier de l'engine.

Discussions similaires

  1. Calendrier simple en java
    Par Premium dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/12/2006, 23h50
  2. Forum simple en Java
    Par lolo_ici_et_la dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 18/09/2006, 17h03
  3. Transactions JAVA / LDAP / RDBMS
    Par mondes_engloutis dans le forum JDBC
    Réponses: 2
    Dernier message: 31/01/2006, 09h52
  4. Un petit software simple en JAVA qui sauve en XML ??
    Par calogerogigante dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/11/2005, 14h19
  5. Edition d'un simple fichier java
    Par mcrepin dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 21/03/2003, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo