DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / Fonctions SQL
  • Exécution de la requête
  • Récupération du résultat de la requête
  • Requête de type INSERT
  • Gestion des mémos texte
  • Gestion des mémos binaires
  • Requête SQL (fonction SQLExec ou requêtes créées par l'éditeur de requêtes)
  • Comparaison de la syntaxe avec HExécuteRequêteSQL
  • Fonction SQLExec et les threads
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Nomme et exécute une requête SQL.
Attention : La fonction SQLExec ne lance pas le traitement de récupération du résultat en mémoire. La récupération du résultat est effectuée lors du premier appel à l'une des fonctions suivantes : SQLPremier, SQLTable ou SQLFetch.
Remarque : Pour manipuler un mémo binaire dans une requête, utilisez le mot-clé WDMemoBinaire dans le texte de votre requête (pour plus de détails, consultez les remarques).
AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst Cette fonction est disponible lors d'un accès aux bases tierces via un Webservice.
HFSQL ClassicHFSQL Client/ServeurConnecteurs Natifs (Accès Natifs)
// Connexion à la base de données
// (Fonction SQLConnecte ou SQLConnecteWS)
 
// Exécuter la requête et récupérer le résultat ligne à ligne
i est un entier = 0
SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1")
TANTQUE SQLAvance("REQ1") = 0  // Il y a encore une ligne à lire
i++
// Récupérer les données
NOM[i] = SQLLitCol("REQ1", 1)
PRENOM[i] = SQLLitCol("REQ1", 2)
POSTE[i] = SQLLitCol("REQ1", 3)
{"IMAGE"+i} = SQLLitMémo("REQ1", 4)
FIN
SQLFerme("REQ1")
 
// Déconnexion (fonction SQLDéconnecte)
Syntaxe

Exécuter une requête SQL Masquer les détails

<Résultat> = SQLExec(<Texte de la requête en SQL> , <Nom de la requête>)
<Résultat> : Booléen
  • Vrai si la requête a été exécutée,
  • Faux dans le cas contraire. Si la requête n'a pas été exécutée, le message d'erreur peut être connu grâce à la variable SQL.MesErreur, après l'exécution de la fonction SQLInfoGene.
<Texte de la requête en SQL> : Chaîne de caractères
Code SQL de la requête à exécuter.
<Nom de la requête> : Chaîne de caractères
Nom associé au texte de la requête. Correspond :
  • soit au nom logique de la requête.
  • soit au nom et au chemin complet de la requête (fichier ".WDR").
Remarques

Exécution de la requête

Les informations concernant l'exécution de la requête peuvent être connues grâce à la fonction SQLInfoGene. La variable SQL.NbCol contient le nombre de colonnes du résultat de la requête.
Après son exécution et son traitement, la requête doit être libérée grâce à la fonction SQLFerme.

Récupération du résultat de la requête

Le résultat de la requête peut être :
  • Transféré dans une table ou une liste (fonction SQLTable).
  • Transféré dans des champs ou des variables (fonction SQLAssocie).
  • Récupéré ligne par ligne (fonction SQLFetch).
HFSQL ClassicHFSQL Client/Serveur

Requête de type INSERT

Lors de l'exécution d'une requête de type INSERT, la variable SQL.IDAuto contient l'identifiant automatique ajouté lors du précédent INSERT.
HFSQL ClassicHFSQL Client/ServeurConnecteurs Natifs (Accès Natifs)

Gestion des mémos texte

Dans le paramètre <Texte de la requête>, un mémo texte s'utilise comme une variable texte. Par exemple :
// Requête avec condition sur un mémo texte dont la valeur est "Bon client"
TexteRequête = "SELECT NOMCLI FROM CLIENT WHERE MEMOCLIENT = 'Bon client'"
SQLExec(TexteRequête, "REQ1")
Connecteurs Natifs (Accès Natifs)

Gestion des mémos binaires

Pour écrire un mémo binaire dans une table (avec un ordre SQL UPDATE ou INSERT), il faut utiliser la syntaxe suivante dans le texte de la requête :
  • {WDMemoBinaire('<NomFichier>' [,'Fichier'])}

    où :
    • Fichier (valeur par défaut) indique que le mémo est un mémo binaire (issu d'un fichier).
    • WDMemoBinaire est un mot réservé.
    • <NomFichier> est le nom physique d'un fichier.
      AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst Cas d'un accès aux bases tierces via un Webservice : Le chemin du fichier correspond à un chemin local à l'application qui exécute le Webservice (c'est-à-dire un chemin sur le périphérique mobile).
  • {WDMemoBinaire('<NomFichier>' [,'FichierTexte'])}
    où :
    • FichierTexte indique que le mémo est un mémo texte (issu d'un fichier).
    • WDMemoBinaire est un mot réservé.
    • <NomFichier> est le nom physique d'un fichier.
      AndroidWidget AndroidiPhone/iPadWidget IOSMac Catalyst Cas d'un accès aux bases tierces via un Webservice : Le chemin du fichier correspond à un chemin local à l'application qui exécute le Webservice (c'est-à-dire un chemin sur le périphérique mobile).
Par exemple :
// Insertion du fichier C:\PHOTO\DUPONT.BMP dans un mémo binaire
TexteRequête = "INSERT INTO CLIENT VALUES ('DUPONT', 'Jean'," + ...
"{WDMemoBinaire('C:\PHOTO\DUPONT.BMP')})"
SQLExec(TexteRequête, "REQ1")
// Insertion du fichier C:\DOC\LETTRE.TXT dans un mémo texte
TexteRequête = "INSERT INTO CLIENT VALUES ('DUPUIS', 'Christophe'," + ...
"{WDMemoBinaire('C:\DOC\LETTRE.TXT', 'FichierTexte')})"
SQLExec(TexteRequête, "REQ1")

Remarque : L'insertion de mémos binaires sur un fichier HFSQL avec les fonctions SQL n'est pas possible et provoque une erreur. Le message d'erreur est le suivant : "Initialisation de la requête impossible. Caractère {WDMemBinaire( inattendu".
HFSQL ClassicHFSQL Client/Serveur

Requête SQL (fonction SQLExec ou requêtes créées par l'éditeur de requêtes)

Lors de l'utilisation des instructions SQL DELETE, INSERT ou UPDATE, aucun contrôle d'intégrité et aucun contrôle de doublons ne sont réalisés sur une base de données HFSQL. Cette fonctionnalité n'est pas disponible dans cette version.
Solution : Utilisez les fonctions HFSQL (HSupprime, HAjoute ou HModifie) sur vos fichiers de données. Le contrôle de l'intégrité et le contrôle des doublons seront automatiquement réalisés.
Remarque : Les fonctions HExécuteRequête et HExécuteRequêteSQL permettent de vérifier l'intégrité et les doublons sur une base de données HFSQL.
HFSQL ClassicHFSQL Client/ServeurConnecteurs Natifs (Accès Natifs)

Comparaison de la syntaxe avec HExécuteRequêteSQL

La fonction HExécuteRequêteSQL permet également d'exécuter une requête SQL. Les paramètres de ces deux fonctions sont identiques mais leur ordre est inversé : en effet, la fonction HExécuteRequêteSQL précise en premier le nom de la requête, puis le texte de la requête (utilisant ainsi la même norme que toutes les fonctions HFSQL).
La syntaxe de la fonction SQLExec est conservée pour compatibilité.

Fonction SQLExec et les threads

Lors de l'exécution de la fonction SQLExec dans un thread secondaire, la connexion utilisée doit être effectuée dans le même thread : la connexion ne peut pas être effectuée dans le thread principal (projet ou fenêtre). La connexion réalisée via la fonction SQLConnecte n'est pas partagée dans les autres threads.
Composante : wd290hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale