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

Stéphanie Tirtiat

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

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

- Auteur : Stéphanie Tirtiat

- Parution : 5 octobre 2005

- Licence : Copyright ® 2005 4D s.a. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Sommaire

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.

1. `----- méthode -----

3. `méthode qui initialise les variables

4. InitVariables

6. `méthode initialisant les paramètres de connexions

7. `‹›DataSource, ‹›UserName, ‹›Password

8. LoginParameters

10. $result:=ODBC_SQLAllocConnect ($connectionID)

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

13. Si ($result=SQL_SUCCESS ) `Connexion OK

14. $result:=ODBC_SQLAllocStmt ($connectionID;$statementID)

16. `la requête

17. `la table test_blob contient une colonne VARCHAR et une colonne BLOB comportant des images jpg

18. $sql_statement:="select * from test_blob where name='NENUPHAR'"

20. $result:=ODBC_SQLPrepare ($statementID;$sql_statement)

21. $result:=ODBC_SQLBindCol ($statementID;1;->ZeName;->zeLength)

22. $result:=ODBC_SQLExecute ($statementID)

23. $result:=ODBC_SQLFetch ($statementID)

25. Si ($result#0)

26. C_ENTIER LONG($res)

27. $res:=ODBC_SQLGetDiagRec (SQL_HANDLE_STMT;$statementID;1;SQLState;nativeError;debugMess)

28. Fin de si

30. `il faut définir une taille de blob à l'avance

31. $size:=1024

32. FIXER TAILLE BLOB(zeBlob;$size) `le blob qui reçoit le data

33. FIXER TAILLE BLOB(zeBlobFinal;0) `le blob concaténé

35. $offset:=0

37. Repeter `on reçoit morceau par morceau (ici, 1024 bytes par itération)

38. $result:=ODBC_SQLGetData ($statementID;2;->zeBlob;zeLength)

39. Si (zeLength>$size)

40. COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;$size)

41. Sinon

42. COPIER BLOB(zeBlob;zeBlobFinal;0;$offset;zeLength)

43. Fin de si

44. $offset:=$offset+$size

45. Jusque (($result=SQL_NO_DATA ) | ($result>0))

47. `créer un document avec l'image reçue

48. $docRef:=Creer document("blob_nenuphar.jpg")

49. FERMER DOCUMENT($docRef)

50. BLOB VERS DOCUMENT(document;zeBlobFinal)

52. `libérer les connexions

53. $result:=ODBC_SQLFreeStmt ($statementID;SQL_UNBIND )

54. $result:=ODBC_SQLDisconnect ($connectionID)

56. Sinon

57. ALERTE("Impossible de se connecter !")

58. Fin de si

60. `----- /méthode -----