Exception avec ma base de donner

Résolu
ramy04804001 Messages postés 65 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 29 mars 2011 - 26 mai 2010 à 04:32
ramy04804001 Messages postés 65 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 29 mars 2011 - 26 mai 2010 à 07:42
Salut les amis ,

je veut récupérer des données de ma base dans un JComboBox mais j'ai trouvé cette exeption <java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide> ma base est générer sur accées
-->Voici mon code:
public void remplirMotClé(){
try
{
// Ouvrir une connexion avec la base de données
DBUtil db = new DBUtil();
//requete de chargement
String requeteInsert ="select MC from Mot_Clé ";
// passage de la requête de chargement
while(db.consulter(requeteInsert).next()){
cbx_mc.addItem(db.consulter(requeteInsert).getString(1));
}
db.fermer();
} catch (SQLException e) {
e.printStackTrace();
}
}

Merci pour vos aides

4 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 mai 2010 à 07:26
Salut,

Aîe, y'a un problème dans ton approche : ta fonction consulter permet de renvoyer un resultSet, ok, mais il ne faut surtout pas l'appeler à chaque tour de boucle. Non seulement tu vas tomber dans une boucle infinie, tu vas bouffer toutes les ressources de ta machine (vu que tu ne libère jamais le resultset), mais en plus ca ne fera jamais ce que tu pense que ca fera !

Donc :
public void remplirMotClé(){ 
try 
{ 
// Ouvrir une connexion avec la base de données 
DBUtil db = new DBUtil(); 
//requete de chargement 
String requeteInsert ="select MC from Mot_Clé "; 
ResultSet result = db.consulter(requeteInsert);
// passage de la requête de chargement 
while(result.next()){ 
cbx_mc.addItem(result.getString(1)); 
} 
result.close();
db.fermer(); 
} catch (SQLException e) { 
e.printStackTrace(); 
} 
} 

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
26 mai 2010 à 07:10
Salut,

Comment veux-tu qu'on t'aide avec si peu de détail ?

Montres-nous au moins le code de ta classe DBUtil !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ramy04804001 Messages postés 65 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 29 mars 2011 1
26 mai 2010 à 07:16
bonjour monsieur DARKSIDIOUS

voici le code de ma classe DBUtil :

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

import javax.swing.JOptionPane;


public class DBUtil {

private Connection con = null;
private Statement stm = null;
private String pilote = "sun.jdbc.odbc.JdbcOdbcDriver";
private String url ="jdbc:odbc:MYBASE";


public DBUtil() {

/* Chargement du pilote */

try {
Class.forName(pilote);
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null, "Pilote non trouvable");

}

/* Connexion */
try {
con = DriverManager.getConnection(url);
/*Création du Statement */

try {
stm = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE , ResultSet.CONCUR_UPDATABLE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Impossible de créer une instruction");
}

} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Echec de connexion");
}

}



/* Passer une requete de consultation */

public ResultSet consulter(String sql)
{
ResultSet rs = null;
try {
rs =stm.executeQuery(sql);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Problème de passage de requête");
}
return rs;
}

/* Passer une requete de modification */
public int modifier(String sql)
{
int n=-1;
try {
n =stm.executeUpdate(sql);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Problème de passage de requête");
}
return n;
}

/* Fermer la connexion */

public void fermer()
{
if (con != null)
try {
con.close();
} catch (SQLException e)
{
JOptionPane.showMessageDialog(null, "Problème de fermeture de la connexion");
}
}
}

merci encore une fois
0
ramy04804001 Messages postés 65 Date d'inscription mardi 13 avril 2010 Statut Membre Dernière intervention 29 mars 2011 1
26 mai 2010 à 07:42
Je vous remercie encore une Foix ca bien marché
0
Rejoignez-nous