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:
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:
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);
}
} |