4D ODBC Pro : lire une colonne BLOB, code exemple
Date de publication : 05/10/05
Par
Stéphanie Tirtiat (Intl Tech Support) 4D ODBC Pro : lire une colonne BLOB, code exemple
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.
`----- 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 -----
 
|