DatabaseUpdate()

Syntaxe

Resultat = DatabaseUpdate(#BaseDeDonnees, Requete$)
Description
Exécute une requête SQL de modification de la base de données. Elle ne renvoie aucun enregistrement.

Arguments

#BaseDeDonnees La base de données à utiliser.
Requete$ La requête à exécuter.

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

Cette fonction est similaire à DatabaseQuery() mais sans affecter la fonction NextDatabaseRow(), il est donc possible d'utiliser cette commande tout en conservant les enregistrements obtenus par DatabaseQuery(). Par contre, il n'est pas possible d'effectuer des sélections ('SELECT' en SQL) ou d'autres types de requêtes qui renvoient des enregistrements, pour cela, utiliser DatabaseQuery().
Cette fonction est utile pour mettre à jour des enregistrements dans la base de données.
En cas d'erreur, le texte d'erreur peut être récupéré par DatabaseError().

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) ; Enumération des enregistrements
    
      ; Mise à jour du champ 'checked'  pour chaque enregistrement, en assumant  que le champ 'id'
      ; est le premier de la table 'employee'
      ;
      DatabaseUpdate("UPDATE employee SET checked=1 WHERE id="+GetDatabaseString(#BaseDeDonnees, 0))
    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

DatabaseQuery() SetDatabaseString(), SetDatabaseLong(), SetDatabaseQuad(), SetDatabaseFloat(), SetDatabaseDouble(), SetDatabaseBlob(), SetDatabaseNull()

OS Supportés

Tous

<- DatabaseQuery() - Database Index - ExamineDatabaseDrivers() ->