Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

verification de creation de tables + JDBC


Messages recommandés

Posté(e)

Tes traces sont incorrectes...

boolean tblExists = rs.next();

System.out.println(rs.next());

Le premier appel à rs.next() positionne l'itérateur sur le premier enregistrement du ResultSet (du moins, "sur l'enregistrement suivant" mais comme a priori on n'a pas encore demandé à accéder au ResultSet, on devrait être sur le premier...)

Le fait d'exécuter à nouveau un rs.next() (dans le println()) va tenter de positionner l'itérateur sur le second enregistrement du ResultSet, qui n'existe de toute façon pas (vu que s'il y avait eu des resultats, il n'y aurait eu au maximum un enregistrement dans le ResultSet), et donc next() renvoie false.

 

Autre chose (qui n'influe peut-être pas, mais on ne sait jamais), l'appel à rs.next() fait se positionner l'itérateur sur l'enregistrement suivant mais tu ne fais jamais de rs.beforeFirst() pour être bien certain de commencer avant le premier... D'ailleurs, étant donné que tu n'attends qu'un seul résultat, tu devrait utiliser rs.first() qui tente de positionner l'itérateur sur le tout premier enregistrement et renvoie false si celui-ci n'existe pas (et, bien évidemment, true dans le cas contraire) ;-)

 

A part en étant outrageusement plus explicite, je crains qu'il soit difficile de tracer les appels avec de simples System.out.println(), il faudrait vraiment voir ce qui se passe à l'exécution avec un debugger...

Posté(e)

bonsoir,

 

desole de mon absence de reponse mais j'ai ete un peu occupe hier et aujourd'hui...tout comme je le serais demain aussi.... :P

 

j'ai tout de meme essayer de faire ce dont tu as parler, je veux dire utiliser first a la place de next mais rien ne change. je dois certainement faire une erreur quelque part mais je ne comprends vraiment pas ou.

 

je m'y reconsacrerais donc vendredi.

 

merci encore

Posté(e)

Y'a pas de mal ! Comme tu peux le constater tu n'es pas le seul à avoir "oublié" ce topic pendant quelques jours ;-)

 

Avant de retenter une exécution, peux-tu ajouter des blocs try / catch partout où c'est possible ? (pas de raison particulière, simple précaution...)

 

-- edit --

Bon, j'ai fait un rapide test avec ce que j'avais sous la main (un driver JDBC javasqlite associé à une base de données SQLite) :

  DatabaseMetaData info = maConnection.getMetaData();
 rs = info.getTables(maConnection.getCatalog(),null,"AllUsers",null);
 boolean tblExists = rs.next();
 if (tblExists) {
  System.out.println(rs.getString("TABLE_NAME"));
  System.out.println(rs.getString("TABLE_TYPE"));
 }
 System.out.println(tblExists);

J'ai bien rs.getString("TABLE_NAME") égal au nom de la table, rs.getString("TABLE_TYPE") égal à "TABLE" et tblExists à true...

 

Donc, en théorie, verifierTables(Connection, String) est OK et le problème se situe ailleurs...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...