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 :

[Sybase] Sybase Open Server + JDBC


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut [Sybase] Sybase Open Server + JDBC
    J'ai une application Java qui appelle des procédures stockées sur un serveur de base de données Sybase. Ces procédures stockées appellaient à leur tours des RPC via Sybase Open Server qui transforme ces appels RPC en appels de procédures stockées.

    Cette application doit évoluer et doit appeller directement Sybase Open Server sans passer par l'intermédiaire de la base de données Sybase. Le problème c'est que l'open serveur à l'air beaucoup plus stricte que la bdd sur les formats. J'ai un champ au format monney. Avant je passait un Float à la bdd ca ne lui posait pas de problème. Mais Open Server refuse le Float. Il me renvoie une erreur du genre "Got bad datatype for parameter 7". J'ai donc regardé la correspondance Sybase <--> JDBC et j'ai vu que le type correspondant à "money" était "decimal". J'ai donc essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CallableStatement cs = conn.prepareCall("{call set_coupon(?,?,?,?,?,?,?,?,?,?,?,?,?)}");
    cs.setObject(7, "0.00", Types.DECIMAL);
    J'ai cependant toujours la même erreur. Est ce que quelqu'un sait quel type de dois utiliser, sachant que le type "money" n'existe pas en JDBC?

    Merci d'avance.

  2. #2
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    ca ne pourrait etre un probleme de decimales (trop en l'occurence ca m'etonnerai mais bon).

    Le type Monaie n'est pas le definition d'un autre type natif ?

    [EDIT] En meme temps tu lui balance une String en lui disant de convertir en Decimal ? Il sait faire JDBC ? un Int en short sans probleme, mais la je n'ai jamais essayé je pense

  3. #3
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    As tu essayé avec setBigDecimal(7, 0) ou setFloat(7, 0) ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut
    @Baine : Oui, la conversion de String en réel c'était un peu osé, mais ca ne le gène pas plus que les autres fois. J'ai essayé avant de mettre new Integer(0) et new BigDecimal(0) mais ça marche pas mieux. Donc là je me suis dit que c'était peut être que les chiffres après la virgule étaient obligatoires et j'ai essayé avec une chaine.

    Et le type monney à l'air d'être un type SQL natif vu que je l'ai retrouvé dans pas mal d'autres docs.

    @Rei, oui c'est les premières chose que j'ai essayé avant d'essayer setObject().

  5. #5
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Là je sèche. Je suis d'accord avec toi MONEY <==> DECIMAL.

    Est-ce que le problème ne viendrait pas de ta procédure SQL ?

    Est-ce que tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CallableStatement cs = conn.prepareCall("{call set_coupon(?,?,?,?,?,?,0,?,?,?,?,?,?)}");

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut
    Si je met un zéro à la place du 7 ème paramètre (et que je renumérote les paramètres suivants) j'ai une SQLException dont le texte est le suivant :

    JZ006: IOException détectée : java.io.IOException: JZ0EM: Fin des données.

  7. #7
    Membre chevronné Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Par défaut
    Argh !! Il me semblait bien me souvenir que cela me fonctionnait pas !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 156
    Par défaut
    D'après ce que quelqu'un m'a dit sur le forum Sybase, il semblerait que l'Open Server soit très restrictif au niveau des types. Donc il attend exactement le type money.

    Je suis en train de voir en créant un objet qui implémente l'interface SQLData et retourne money comme type. Peut être que ça marchera avec ça.

    Merci à ceux qui ont essayé de m'aider en tout cas (et si quelqu'un d'autre a la solution, qu'il ne se prive surtout pas pour me la donner ).

Discussions similaires

  1. [BS]SYBASE 12.5 SERVER ERROR BY RESTART
    Par limto dans le forum Adaptive Server Enterprise
    Réponses: 3
    Dernier message: 24/05/2008, 01h03
  2. [JDBC] Sybase Open Server + JDBC
    Par neuromencien dans le forum Sybase
    Réponses: 2
    Dernier message: 10/08/2006, 16h24
  3. SQL2K : Sybase vers SQL Server : pb Collation
    Par quenec dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/04/2006, 12h46
  4. Migration Sybase Anywhere -> SQL Server 2005 Express
    Par bubi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 15h23

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