Sql + tableau

cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006 - 17 juin 2004 à 14:58
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 - 18 juin 2004 à 19:32
bonjour a tous,
voila j'ai un probleme d'execution de requete SQL.

try
{
Statement requete = c.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet r = requete.executeQuery("SELECT DISTINCT nom_com FROM commune");

r.last();
String[] res = new String[r.getRow()];
System.out.println(r.getRow());
r.beforeFirst();

int i = 0;
while (r.next())
{
res[i] = r.getString(1);
System.out.println(res[i]);
i++;
}

return res;
}
catch(Exception e)
{

}
return new String[0];

Si dans ma table 'Commune' j'ai deux ville portant le même nom il me renvoit systematiquement une table vide alors qu'il devrait mettre qqch dedans.

Par exemple si je n'ai pas de doublons pas de pbs tout marche bien.
Mais, si j'ai des doublons, comme actuellement, ca plante.
Il m'indique un nombre de lignes à 3 et ne m'affiche que 2 valeurs ce qui est normal. Mais pq 3 lignes? Avec le DISTINCT il ne devrait pas supprimer les lignes avec les doublons?

Cette requete sert pour ajouter une liste d'Item à un JComboBox.

Merci pour votre aide

cid019

7 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
17 juin 2004 à 15:26
la table vide c'est pas parsqu'y a une exception a la con?

essais de mettre e.printStackTrace(); dans le catch
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
17 juin 2004 à 15:35
effectivement ya une exception qui dit Etat de curseur non valide.
C'est en rapport avec mon tableau mais...
cid019
0
wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
17 juin 2004 à 15:41
simplifie un peu pour voir: utilise

r.getFetchSize(); pour avoir le nombre de retour et

requette=.createStatement(); d'abord
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
17 juin 2004 à 15:52
ca plante quand meme. j'ai ete oblige de virer le beforeFirst() et maintenant getFetchSize() ne me retourne que le premier element.

cid019
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
17 juin 2004 à 22:24
Salut,

je dois dire que ta façon te remplir ton tableau est originale :)
Essaie plutôt d'utiliser des listes ce qui est beaucoup plus simple et performant.
Sinon pour ta requête je vois pas de pb particulier ...

List result=new ArrayList();
try
{
Statement requete = c.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet r = requete.executeQuery("SELECT DISTINCT nom_com FROM commune");

while (r.next())
{
String commune=r.getString(1);
result.add(commune);
System.out.println(commune);
}
}
catch(SQLException e)
{
System.err.println(e.getMessage());
}
return (String[]) result.toArray(new String[result.size()]);
0
cid019 Messages postés 237 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 11 juillet 2006
18 juin 2004 à 08:12
Merci a toi,
tu m'auras vraiment bcp aidé pr ce projet.
Cela dit pour le remplissage de tableau original, j'ai toujours fait comme ca jusqu'a maintenant et ca a tjs bien marché.

Au fait truc qui n'a rien a voir : serait-il possible pour un JTable de rendre non saisissable uniquement certaines colonnes et pas d'autres?

Merci pour tout
cid019
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
18 juin 2004 à 19:32
pour rendre certaines colonnes éditables, il faut définir le modèle de la table (TableModel). C'est très simple à faire, il suffit de définir un model en héritant de DefaultTableModel et de redéfinir les méthodes isCellEditable et setValueAt.
0
Rejoignez-nous