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

4D ODBC Pro : lire une colonne BLOB, code exemple

4D ODBC Pro : lire une colonne BLOB, code exemple

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Produit : 4D ODBC 2004 · Plateforme : Mac & Win

Ci-dessous un code exemple qui récupère les données d'une colonne Oracle de type BLOB avec les commandes du plugin 4D ODBC Pro 2004.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
`----- méthode -----

`méthode qui initialise les variables
InitVariables

`méthode initialisant les paramètres de connexions
`‹›DataSource, ‹›UserName, ‹›Password
LoginParameters

$result:=ODBC_SQLAllocConnect ($connectionID)
$result:=ODBC_SQLConnect ($connectionID;‹›DataSource;‹›UserName;‹›Password)

Si ($result=SQL_SUCCESS ) `Connexion OK
    $result:=ODBC_SQLAllocStmt ($connectionID;$statementID)

    `la requête
    `la table test_blob contient une colonne VARCHAR et une colonne BLOB comportant des images jpg
    $sql_statement:="select * from test_blob where name='NENUPHAR'"

    $result:=ODBC_SQLPrepare ($statementID;$sql_statement)
    $result:=ODBC_SQLBindCol ($statementID;1;->ZeName;->zeLength)
    $result:=ODBC_SQLExecute ($statementID)
    $result:=ODBC_SQLFetch ($statementID)

    Si ($result#0)
        C_ENTIER LONG($res)
        $res:=ODBC_SQLGetDiagRec (SQL_HANDLE_STMT;$statementID;1;SQLState;nativeError;debugMess)
    Fin de si

    `il faut définir une taille de blob à l'avance
    $size:=1024
    FIXER TAILLE BLOB(zeBlob;$size) `le blob qui reçoit le data
    FIXER TAILLE BLOB(zeBlobFinal;0) `le blob concaténé

    $offset:=0

    Repeter `on reçoit morceau par morceau (ici, 1024 bytes par itération)
        $result:=ODBC_SQLGetData ($statementID;2;->zeBlob;zeLength)
        Si (zeLength>$size)
            COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;$size)
        Sinon
            COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;zeLength)
        Fin de si
        $offset:=$offset+$size
    Jusque (($result=SQL_NO_DATA ) | ($result>0))

    `créer un document avec l'image reçue
    $docRef:=Creer document("blob_nenuphar.jpg")
    FERMER DOCUMENT($docRef)
    BLOB VERS DOCUMENT(document;zeBlobFinal)

    `libérer les connexions
    $result:=ODBC_SQLFreeStmt ($statementID;SQL_UNBIND )
    $result:=ODBC_SQLDisconnect ($connectionID)

Sinon
    ALERTE("Impossible de se connecter !")
Fin de si

`----- /méthode -----

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.