IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

ResultSetMetaData et Oracle


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut ResultSetMetaData et Oracle
    Bonjour,
    Je voudrais, via les ResultSetMetaData, récuperer pour chaque champs, le nom de la table Oracle d'origine.

    A priori, dans la doc, il semblerait qu'il faille faire quelque chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    public SqlTranslator(){
           dtc = new DataConnector();
     
           Requetes reqs = new Requetes();
           myreq = (MyRequete)reqs.get_req("1");
           conn = dtc.connect_data(myreq.getBase());
           try{
               PreparedStatement ps = conn.prepareStatement(myreq.getReq(),
                       ResultSet.TYPE_SCROLL_INSENSITIVE,
                       ResultSet.CONCUR_READ_ONLY);
     
     
               ps.setString(1, "20");
               rs = ps.executeQuery();
               ResultSetMetaData rsmd = rs.getMetaData();
               System.out.println("Voici "+rsmd.getTableName(1));
               System.out.println(rsmd.getColumnLabel(1));
               ps.close();
           }
           catch(Exception e){
               e.printStackTrace();
           }
       }
    Le ResultSet contient bien des valeurs, j'obtiens également les noms de colonnes...par contre, en ce qui concerne le nom de la table, ca me retourne 'vide'...
    J'utilise une base oracle, et le drivers jdbc ojdbc14.jar
    Quelqu'un pourrait t'il m'aider...sachant que le but, c'est d'afficher les données des requêtes dans une JTable, et grace au meta donnée, faire les mises a jour automatiquement dans la base lorsqu'un utilisateur modifie un champ dans la grille....
    (en effet, il est facile de faire un update quand on connais le nom de la table et le nom du champ...)
    Merci d'avance a tous ceux qui pourrons me faire avancer dans ma recherche...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bon, et bien, j'ai trouvé ma réponse sur oracle devtech....c'est pas possible de faire un getTableName() sur une base Oracle...
    OracleResultSetMetaData interface does not implement the getSchemaName() and getTableName() methods because underlying protocol does not make this feasible.
    Donc voila, ca me pose un gros problème...
    En effet, je voudrais trouver un moyen de simplifier mes échanges avec la base.
    Je dois mettre en place une JTable, contenant une multitude de champs. Il faut que lors d'une modification d'un des champs, je mette a jour ma base...seulement je ne souhaite pas écrire les requêtes d'insert et d'update pour tous mes champs, ou pour toutes mes requêtes sources.
    Comment est - il possible de faire ca en Java?
    J'ai vu un peu JDO, qui pourrait peut être répondre a mon problème...mais je n'en suis pas sûr...
    Quelqu'un connais t'il un moyen de rajouter une couche entre mon interface et la bd qui permet de gérer plus facilement le lien? le but étant, lors d'une modification de champs, de mettre a jour la base dynamiquement... (j'entends par la, sans devoir explicitement faire appel à une requête)

    Merci d'avance !

  3. #3
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 50
    Par défaut
    regarde du coter de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connection .createStatement(int resultSetType, int resultSetConcurrency)
    qui peux te permettre de créer des resulset , à travers lesquels tu poura faire tes mise a jour facilement du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tonResultSet.updateInt(int columnIndex, int x)
    mais attention ta requete doit contenir la liste de toutes les colonnes et non pas "*", en effet jdbc ajoute une colonne ROWID devant les autres, d'où l'impossibilité de mettre *.

    de plus j'ai trouver une autre limite a cela, sur une base oracle, l'utilisation de ceci ne me permet plus de faire getMoreResult comme je l'indique dans http://www.developpez.net/forums/sho...d.php?t=207556

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Ca met a jour le ResultSet, mais est-ce que ca met a jour la base également?

    En tout cas, merci bcp pour ta réponse, je vais regarder cela...

Discussions similaires

  1. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  2. [Comparatif] DB2, Oracle et SQLServer
    Par Laurent MALAVASI dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 25/10/2002, 12h26
  3. [VB6] Connection ODBC Oracle
    Par babe dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/10/2002, 16h52
  4. [Kylix] sqlconnection + oracle
    Par tibo55555 dans le forum EDI
    Réponses: 1
    Dernier message: 02/09/2002, 09h09
  5. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo