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 :

probleme de fermeture de connexion


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Points : 36
    Points
    36
    Par défaut probleme de fermeture de connexion
    salut
    lors de mon application java j'ai eu un problème bizarre exactement lors de la fermeture de connexion avec la base de donnée "access"
    jetez un coup d'oeil d'abord sur l'exécution puis le code
    l'exécution:
    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
    connexion au driver...
    ==>connexion reussie
    connexion à la base...
    ==>connexion reussi
    ***avant la modification***
    recuperation des données
    nom : mohamed saleh el3ayyari,numero : 1, email : jadour@9o3r.5om
    nom : mahdi ben yeddir,numero : 2, email : finou@hay.net
    ==>recuperation reussi
    ***apres la mododification***
    recuperation des données
    nom : mohamed saleh el3ayyari,numero : 1, email : jadour@9o3r.5om
    nom : test,numero : 2, email : finou@hay.net
    ==>recuperation reussi
    erreur de CLOSE() java.sql.SQLException: [Microsoft][Pilote ODBC Microsoft Access]Etat de la transaction non valide
    le code celui-ci
    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
    import java.sql.*;
     
    public class bd {
     
    	int num;								//parametre de la requete
    	String nom,email;
     
    	static String log = "";					//parametre de la connexion à la base
    	static String pw = "";
    	String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    	String url = "jdbc:odbc:supernet_test_pilote_odbc";
    	Connection connect;
     
    	ResultSet rs;							//parametre pour les requete et les modification de la base
    	Statement state;
    	PreparedStatement pstate;
    	int nb_mod;								 
     
    //methode fermer la connexion à la base
    	void DBconnectclose(){
    		if (connect != null){
    			try{
    				connect.close();
    			}
    			catch (SQLException e){
    				System.out.println("erreur de CLOSE() " + e);
    			}
    		}
    	}
    //methode pour ouvrir la connexion à la base
    	void DBconnectopen(String login,String passeword){
    		//connexion avec le driver
    		System.out.println("connexion au driver...");
    		try{
    			Class.forName(driver);
    			System.out.println("==>connexion reussie");
    		}
    		catch (ClassNotFoundException e){
    			System.out.println("==>erreur de chargement de pilotes : \n" + e);
    			System.exit(0);
    		}
    		//connexion avec la base
    		System.out.println("connexion à la base...");
    		try{
    			connect = DriverManager.getConnection(url,login,passeword);
    			state = connect.createStatement();
    			connect.setAutoCommit(false);
    			System.out.println("==>connexion reussi");
    		}
    		catch (SQLException e){
    			System.out.println("==>erreur de connexion à la base de données : \n" + e);
    			System.exit(0);
    		}
    	}
     
    // methode pour les requètes
    	void requete(String sql_req){
    		System.out.println ("recuperation des données");
    		try{
    			state = connect.createStatement();
    			rs = state.executeQuery(sql_req);
    			while (rs.next()) {
    			//recuperation les éléments du tuple
    				nom = rs.getString(1);
    				num  = rs.getInt(2);
    				email = rs.getString(3);
    				System.out.println ("nom : " + nom + ",numero : " + num + ", email : " + email);
    			}
    			rs.close();
    			state.close();
    			System.out.println ("==>recuperation reussi");
    		}
    		catch(Exception e){
    			System.out.println ("==>erreur de recuperation " + e);
    		}		
    	}
     
     
    //methode pour les modification
    	void modification(String sql_modification){
    		try{		
    			state = connect.createStatement();
    			//pstate.setInt(1, val);
    			//pstate.setString(1, str);
    			//pstate.setDate(1, d, gc);
    			nb_mod = state.executeUpdate(sql_modification);		//nombre d'enregistrement modifiers
    			state.close();
    		}
    		catch(Exception e){
    			System.out.println ("==>erreur ajout " + e);
    		}
    	}
     
    //methode principal	
    	public static void main (String arg[]){
    		bd test = new bd();
    		test.DBconnectopen(log, pw);
    		System.out.println ("***avant la modification***");
    		test.requete("select nom_cli,N°cli,email_cli from Client;");
    		test.modification("update Client set nom_cli = 'test' where N°cli = 2");
    		System.out.println ("***apres la mododification***");
    		test.requete("select nom_cli,N°cli,email_cli from Client;");
    		test.DBconnectclose();
    		System.exit(0);
    	}
    }

  2. #2
    Membre actif Avatar de mOuLi
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Points : 257
    Points
    257
    Par défaut
    A première vue, je constate que :
    1/ tu ne gères pas les transactions (begin, commit, rollback) et comme tu as positionné l'auto-commit à "false", je pense que c'est la source de ton erreur.
    (pour + d'infos, cf la FAQ JDBC )
    2/ il serait préférable que tu positionnes tes fermetures de ressources (Statement et ResultSet) dans des blocs finally. Ca permet de garantir la libération de ces ressources même en cas d'erreur sur la (ou les) requête(s).

Discussions similaires

  1. Problème de fermeture de connexion
    Par maniolo dans le forum JDBC
    Réponses: 4
    Dernier message: 06/11/2006, 15h58
  2. [Session]Problème de fermeture de session
    Par july dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 16/06/2005, 12h25
  3. [TP] Problème de fermeture Turbo Pascal
    Par Aezar dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 22/05/2005, 10h24
  4. [C#] [Oracle] Problème de chaine de connexion
    Par didoboy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 08/01/2005, 11h32
  5. [Linux] Probleme de fermeture de Sockets
    Par diefo dans le forum Réseau
    Réponses: 6
    Dernier message: 30/12/2003, 13h10

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