Bonjour à tous,
J'utilise actuellement Eclipse ainsi que la bibliothèque iBatis afin de lire un fichier SQL (script) directement depuis Eclipse. Mais je rencontre un problème. Je m'explique : je souhaiterais que, lorsque un script est mal éxecuté (pour n'importe quelle raison), on effectue un rollback afin de revenir en arrière, et ce sans toucher au fichier script, mais au code Java dans Eclipse.
Or, lorsque j'exécute un rollback après l'exécution de mon script, rien ne ce passe, il ne revient pas en arrière. Je me demande si cette fonctionnalité est réalisable du fait que je passe par un fichier script et non par des requêtes à la main dans mon fichier Java :s ...
Fichier Java utilisant iBatis :
Fichier sql :
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 String monScript = "script.sql"; try { Class.forName("com.mysql.jdbc.Driver"); Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/ahiweb", "root", "root"); Statement st = null; ScriptRunner sr = new ScriptRunner(cn); Reader r = new BufferedReader( new FileReader(monScript)); //fichier placer à la racine du proget sr.runScript(r); cn.rollback(); //rien ne ce passe ici }
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 START TRANSACTION; INSERT into ahiweb.utilisateur VALUES ('955', '55', '117', 'Tata', 'Titi', 'toto', 'toto', '2', '1', 'toto@gmail.com', '1', '0656565656', '2012-01-02 00:00:00', '2012-01-02 00:00:00', '', '2012-01-02 00:00:00', '2012-01-02 00:00:00', '0', '0', '0', '0', '0' ); INSERT into ahiweb.utilisateur VALUES ('956', '55', '117', 'Tutu', 'Titi', 'toto', 'toto', '2', '1', 'toto@gmail.com', '1', '0656565656', '2012-01-02 00:00:00', '2012-01-02 00:00:00', '', '2012-01-02 00:00:00', '2012-01-02 00:00:00', '0', '0', '0', '0', '0' ); CREATE TABLE `ahiweb`.`tabletest` ( `idtabletest` INT NOT NULL AUTO_INCREMENT COMMENT '', `nomtabletest` VARCHAR(45) NULL COMMENT '', `numerotabletest` INT NULL COMMENT '', `villetabletest` INT(10) UNSIGNED NULL COMMENT '', PRIMARY KEY (`idtabletest`) COMMENT '', INDEX `FKTest_idx` (`villetabletest` ASC) COMMENT '', CONSTRAINT `FKTest` FOREIGN KEY (`villetabletest`) REFERENCES `ahiweb`.`adr` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION);
Partager