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

Bases de données Delphi Discussion :

[ODBC] SQLBindParameter


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Par défaut [ODBC] SQLBindParameter
    Hello,

    J'essaie d'utiliser la fonction ODBC BINDPARAMETER.

    Avec un exemple simple d'insertion d'un texte dans le champ LastName j'ai toujours le message "LastName ne peut être une chaine vide" (champ non null).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
    sTexte : String;
    lTexte : Integer;
    pTexte : Pointer;
     
    begin
    SQLPrepare(hstmt, Pchar('Insert Into Employees(LastName) Values(?)'),SQL_NTS);
    sTexte := 'Toto';
    lTexte := Length(sTexte);
    pTexte := @sTexte;
    SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR, SQL_VARCHAR, lTexte,0, pTexte , 0, iRet);
    SQLExecute(hstmt);
    Le code est épuré des controles des fonctions ODBC, le retour est toujours OK sauf pour SQLExecute.

    lTexte contient bien 4, mais iRet a en retour la valeur 0 et du coup la requête insère un champ Null au lieu de Toto.

    Une idée ?

    La requete "Insert Into Employees(LastName) Values(?)" fonctionne bien directement sous Access (demande d'un paramètre).

    Merci !

  2. #2
    Membre chevronné

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Par défaut
    Bon, j'ai un peu avancé à force de tests,

    Actuellement j'arrive à insérer le 1er caractère en ajoutant la fonction SQLNumParams juste après SQLPrepare et en modifiant

    pTexte := @sTexte[1];

    Du progrès, mais manque encore des caractères

  3. #3
    Membre chevronné

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Par défaut
    Bon, j'ai fini par trouver.

    La variable iRet doit contenir également la longueur des données à transmettre, en l'occurence lTexte.

    L'appel à SQLNumParams n'est donc plus nécessaire. En fait je stockais le résultat de cette fonction (valeur 1) dans iRet.

    A la place de la longueur, on peut également indiquait des variables comme SQL_NTS si on transmet une chaine de caractère qui se termine par \0.

    Voilà, au cas où quelqu'un se poserait la même question un jour

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Kylix] PostgreSql via ODBC
    Par doykati dans le forum EDI
    Réponses: 3
    Dernier message: 08/02/2007, 10h10
  2. [ODBC] SqlBindParameter et SQL_TIMESTAMP
    Par punx120 dans le forum Access
    Réponses: 1
    Dernier message: 01/02/2007, 12h36
  3. [Sybase] Pilote ODBC Sybase sous NT 4.0
    Par SoaB dans le forum Sybase
    Réponses: 2
    Dernier message: 23/10/2002, 12h27
  4. [filemaker pro]odbc et dsn less
    Par google dans le forum Autres SGBD
    Réponses: 7
    Dernier message: 24/06/2002, 15h26
  5. Connexion ODBC
    Par Anonymous dans le forum Réseau
    Réponses: 2
    Dernier message: 23/04/2002, 12h10

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