DatabaseQuery()
Syntaxe
Resultat = DatabaseQuery(#BaseDeDonnees, Requete$ [, Options])Description
Exécute une requête SQL qui ne modifie pas la base de donnée (de type 'SELECT' par exemple).
Arguments
#BaseDeDonnees La base de données à utiliser. Requete$ La requête SQL à exécuter. Options (optionnel) Peut être une des valeurs suivantes: #PB_Database_StaticCursor : Exécute la requête pour accéder au résultat d'une manière séquentielle. Il n'est pas possible de revenir en arrière avec PreviousDatabaseRow() ou FirstDatabaseRow() sur certains pilotes, mais c'est le moyen le plus rapide pour obtenir les données (par défaut). #PB_Database_DynamicCursor: Exécute la requête pour accéder au résultat d'une manière aléatoire en utilisant PreviousDatabaseRow() ou FirstDatabaseRow(). Cela peut être plus lent, voire non pris en charge sur certains pilotes.
Valeur de retour
Renvoie une valeur non nulle si la requête a réussi, zéro sinon (en raison d'une erreur SQL ou une requête mal formatée).
Remarques
Pour modifier une base de données, utiliser DatabaseUpdate().
Si une requête n'a pas abouti, la description exacte de l'erreur peut être récupérée grâce à DatabaseError().
Si une requête a abouti alors NextDatabaseRow() peut être utilisé pour lister les enregistrements renvoyés. Cette commande affecte toujours NextDatabaseRow() même si aucun enregistrement n'est renvoyé par la requête. Il est conseillé d'utiliser DatabaseUpdate() quand une requête ne renvoie jamais d'enregistrement.
Pour obtenir le nombre de colonnes (champs) renvoyé par la requête, utiliser DatabaseColumns().
Pour exécuter une requête qui ne renvoie pas tous les enregistrements (données), utiliser DatabaseUpdate() au lieu de DatabaseQuery()().
Une fois que les résultats de la requête ne sont plus nécessaires, FinishDatabaseQuery() doit être appelée pour libérer toutes les ressources de la requête.
La requête peut contenir des espaces réservés pour les variables de liaison. Ces variables doivent être définies avant d'appeler SetDatabaseString(), SetDatabaseLong() etc. Après l'exécution de la requête, les variables liées sont effacées et doivent être définies à nouveau pour de futurs appels. La syntaxe de spécification des variables liées à SQL dépend de la base de données. Voir le deuxième exemple ci-dessous.
Exemple
; D'abord, il faudra se connecter à une base de données qui contient une table 'employee' ; If DatabaseQuery(#BaseDeDonnees, "SELECT * FROM employee") ; Recupère tous les enregistrements de la table 'employee' While NextDatabaseRow(#BaseDeDonnees) ; Enumeration des enregistrements Debug GetDatabaseString(#BaseDeDonnees, 0) ; Affichage du contenu du premier champ Wend FinishDatabaseQuery(#BaseDeDonnees) EndIf
Exemple: Variables liées avec SQLite, MySQL et ODBC
; SQLite, MySQL et ODBC partagent la même syntaxe pour les variables de liaison, indiquées par le caractère "?" ; SetDatabaseString(#Database, 0, "test") If DatabaseQuery(#Database, "SELECT * FROM employee WHERE id=?") ; ... EndIf
Exemple: PostgreSQL
; PostgreSQL utilise une autre syntaxe dans la déclaration: $1, $2 .. pour indiquer le paramètre indéfini ; SetDatabaseString(#Database, 0, "test") If DatabaseQuery(#Database, "SELECT * FROM employee WHERE id=$1") ; ... EndIf
Voir aussi
DatabaseUpdate(), NextDatabaseRow() SetDatabaseString(), SetDatabaseLong(), SetDatabaseQuad(), SetDatabaseFloat(), SetDatabaseDouble(), SetDatabaseBlob(), SetDatabaseNull()
OS Supportés
Tous