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 :

ArrayList or String[] ..


Sujet :

JDBC Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut ArrayList or String[] ..
    salam

    je veux appelé une fonction pl/sql depuis un code java, mais pour utilisé la methode set... sur 'preparedStatement' je dois avoir un type compatible, j'ai essayé avec SetArray ça n'a pas marché et aussi avec ArrayList j pa su comment la casté en Array...

    si vous avez autres propositions, n'hésitez pas.


    j'ajoute que c la fonction pl/sql qui admet comm parametre un tableau de varchar. qui IN OUT, donc pr le remplir o depart et pr reccupéré aussi le résultat j'ai besoin d'un type compatible;

    merci de me posté vos idées le plutot possible.


    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Bonjour,

    Est-ce que cela fonctionne en utilisant la méthode toArray() de votre ArrayList ?

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    nn ça n'a pa marché, j eu cet erreur : Conflit de type de paramètre: sqlType=2003 en plus toArray retourne un objet

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Pourriez-vous nous montrer la partie du code java et l'instruction pl-sql ?

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    oui biensur


    CallableStatement cstmt = null;
    cstmt = conn.prepareCall("begin ? :=TRAN_WSRV_PKG.WSRV_Balance(?,?); end;");
    cstmt.registerOutParameter(1, Types.INTEGER);
    cstmt.registerOutParameter(2, Types.INTEGER);
    cstmt.registerOutParameter(3, Types.ARRAY);
    cstmt.setArray(3, VR);

    le 3eme parametre que j pa su definir pcq en pl/sql j'ai ça:

    TYPE VR_TAB IS TABLE OF VARCHAR2(110)
    index by binary_integer;

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Et à quoi ressemble la déclaration et l'initialisation de VR (qui doit être votre tableau ou liste), quelles sont les données insérées dans VR ?

    Remarque :
    Il serait préférable d'utiliser les balises [ CODE][/CODE] (le bouton # de l'éditeur de posts), le code sera plus lisible (même s'il y a peu de ligne de code ici)

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    justemet je ne sai pa quel type java je dois declaré le VR, pr que je puisse appelé correctmt la fonction pl/sql que j'ai!

    normalment dans le package de la fonction il est déclaré comme suite:

    [ CODE]
    #TYPE VR_TAB IS TABLE OF VARCHAR2(110) index by binary_integer;
    [/CODE]

    c ce k j noté tt à l'heur, mnt je vx applé une fonction qui a ce type comm parametre IN OUT et je sai pa koi faire en java!

    Merci

  8. #8
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    En Java, que mettez-vous dans votre array ? des String, des int et des String ?
    Je pense que le problème vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cstmt.registerOutParameter(1, Types.INTEGER);
    cstmt.registerOutParameter(2, Types.INTEGER);
    cstmt.registerOutParameter(3, Types.ARRAY);
    Remarque : pour les balises code, il faut que la première soit :[CODE] (ne pas mettre d'espace entre le [ et le C ... j'avais écrit ainsi pour que la balise apparaisse et qu'elle ne soit pas interprétée par le forum

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    justmt mon problem est k j un tableau des varchar utlisé dans une fonction pl/sql, et j 2 autre parametre integer; le tableau des varchar ou strig j sais pa cmt le declaré dans mon code java, sachant k je v l'intialisé par des valeur et puis réccupéré les valeur aprés l'appel de la fonction PL/SQL, donc si vous pouvez me donné le type que je dois mettre en tenant en compte k "String[]" donc je ne px pa utlisé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #cstmt.registerOutParameter(3, Types.ARRAY);
    NB: c la 1ere fois k j'écri ds un forum dc escusé mon ignorance

  10. #10
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    et avec la méthode setObject :
    http://java.sun.com/j2se/1.4.2/docs/...ject,%20int%29

    Ça donnerait quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cstmt.setObject(3, (Object)VR, Types.ARRAY);
    au lieu de setArray ...

    Qu'en pensez-vous et qu'est-ce que ça donne ?

  11. #11
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Une autre question, quel traitement effectuez-vous en pl/sql ?
    Peut être une / des requête ( s ) SQL suffiraient étant donné que vous effectuez un traitement en java ?

    Ce que je veux dire, c'est : est-ce que les traitements effectués en PL/SQL pourrait être effectués directement en Java ?

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Non, le traitement de PL/SQL ne peut en aucun cas être remplacé par un code java maheureusmt pr moi!

  13. #13
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    le setObject ne march pas n'en plu

    Merci

  14. #14
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Et quelle est la signature (la déclaration) de la procédure stockée WSRV_Balance ?

  15. #15
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    J'ai trouvé ceci sur le site d'oracle :
    http://www.oracle.com/technology/sam...ray/index.html

  16. #16
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    voici la declaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    FUNCTION WSRV_Balance( Cus_code IN NUMBER,VR_T OUT VR_TAB)
    RETURN  number;

  17. #17
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Est-ce que cela fonctionne mieux ?

    Il faudrait faire quelquechose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CallableStatement cstmt = null;
    cstmt = conn.prepareCall("{? = call TRAN_WSRV_PKG.WSRV_Balance(?,?)}");
    statement.registerOutParameter(1,Types.INTEGER);
    cstmt.setInt(2,VALEUR_CUSCODE);//VALEUR_CUSCODE est à renseigner à la valeur que vous souhaitez
    cstmt.registerOutParameter("VR_T", Types.ARRAY);
    cstmt.execute();
    java.sql.Array VR = getArray("VR_T");
    J'ai regardé ici : http://java.developpez.com/faq/jdbc/...lablestatement

    Sinon, est-ce possible de retourner un Array au lieu d'un TABLE dans votre procédure PL/SQL ?
    (http://java.developpez.com/faq/jdbc/...es#tabRelation : le type TABLE est absent ... )

  18. #18
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Plutôt que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.Array VR = getArray("VR_T");
    Vous pouvez essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] VR = (String[]) ocstmt.getPlsqlIndexTable("VR_T",String.TYPE);
    Source :
    http://www.oracle.com/technology/sam...es/Readme.html

  19. #19
    Nouveau Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    le type Array c ce k j essayé depui le debut il me donne tjrs conflit entre les parametre par contre le type VARRAY pass bien en code java et l'excution se bloc o niveau de la fonction pl/sql, je v revoir les types encor une fois....

    merci

  20. #20
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 239
    Points : 313
    Points
    313
    Par défaut
    Je vous conseille de bien faire attention aux paramètres IN et OUT de votre fonction PL/SQL :
    dans votre appel JAVA, pour les paramètres OUT, bien utiliser la méthode
    et récupérer les résultats grâce à des getType
    et pour les paramètres IN, utiliser simplement les méthode setType

Discussions similaires

  1. Arraylist de Arraylists de strings
    Par PomFritz dans le forum C#
    Réponses: 6
    Dernier message: 31/05/2008, 12h03
  2. Comparaison : ArrayList vs String
    Par Revan dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 16/03/2008, 12h40
  3. [nested:iterate] sur une ArrayList de String
    Par kij dans le forum Struts 1
    Réponses: 2
    Dernier message: 24/10/2007, 09h46
  4. ArrayList de String
    Par blbird dans le forum Struts 1
    Réponses: 1
    Dernier message: 14/12/2006, 12h28
  5. [C#] Convertir un ArrayList en String[] ?
    Par Amerok dans le forum ASP.NET
    Réponses: 13
    Dernier message: 06/12/2005, 15h38

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