Voila, je suis débutant et je developpe une appli avec une connection à une BD.

Pour ce faire j'utilise une seule instance de l'objet suivant:
/*
* Created on 16 oct. 2006
*/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;



public class DataManager {


/**
* VARIABLES////////////////////////////////////////////////////////////
**/
private Statement st;
private ResultSet rec;
private String data;

/**
* CONSTRUCTEUR/////////////////////////////////////////////////////////
**/
public DataManager(String NomDeOdbc){
data ="jdbc:odbc:"+NomDeOdbc;
//System.out.println("construction OK");
}

/**
* METHODES/////////////////////////////////////////////////////////////
**/
public void open(){
//Le driver
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.err.println("erreur driver : "+e);
}

//la connection
try{
Connection maCon = DriverManager.getConnection(data, "", "");
st = maCon.createStatement(rec.TYPE_SCROLL_SENSITIVE, rec.CONCUR_READ_ONLY);


}catch(SQLException sqle){
System.err.println("erreur conn : "+sqle);
}
//System.out.println("Open OK");
}


public void close(){
try{
st.close();
}catch(SQLException sqle){
System.err.println("erreur fermeture connexion : "+sqle);
}
//System.out.println("Close OK");
}

public void execute(String SQL){
//open();
try{
System.out.println("la requete est: "+SQL);
st.executeUpdate(SQL);
}catch(SQLException sqle){
System.err.println("erreur d'execution : "+sqle);
}
//close();

}


public ResultSet GetRs(String Sql){

//open();
try{
System.out.println("la requete est: "+Sql);
rec = st.executeQuery(Sql);

}catch(SQLException sqle){
System.err.println("erreur d'execution : "+sqle);
}
//close();
return rec;
}

public String absoluteString(String S){
String resultat="";

for(int i=0; i<(S.length()); i++){
//int y="'";
if(S.charAt(i)=='\''){
resultat+='\'';//on double le caractère pour echappement suos access
resultat+=S.charAt(i);

}else{
resultat+=S.charAt(i);
}
}

return resultat;
}

/**
* GETTERS//////////////////////////////////////////////////////////////
**/

/**
* SETTERS//////////////////////////////////////////////////////////////
**/
}
/**
* CLASSES//////////////////////////////////////////////////////////////
**/
Au depart, avant d'utiliser la methode getRS(), je faisait open()...et apres close.

On m'a conseillé de ne pas faire ainsi et de faire qu'une seule fois open() et close au debut et à la fin de mon appli.

Donc le premier getRs() que je fait fonctionne trés bien, les problemes arrivent lors de la seconde utilisation de getRs() qui dès lors me renvoie un resultset qui contient les resultats du premier getRs().

L'ideal serait de pouvoir nettoyer entre temps, mais nettoyer quoi et comment?

D'avance merci.