|
|
|
|
|
- Présentation
- Comment gérer une base de données locale ?
- Fonctions SQL disponibles
- Exemple : Enregistrer en local les données d'un site déconnecté
- Les étapes
- Récupérer des enregistrement de la base distante
- Récupérer les données locales pour mettre à jour la base distante
Accès en mode local à une base de données (SQLite)
Disponible uniquement avec ce type de connexion
WEBDEV permet à un site de créer et d'accéder à une base de données créée par le navigateur sur le poste de l'internaute en code navigateur. Cette fonctionnalité permet par exemple de saisir des données en mode déconnecté pour les transmettre au serveur dès que la connexion à Internet sera rétablie. Attention : Cette fonctionnalité est disponible uniquement sous certains navigateurs : - Chrome,
- Safari,
- Opéra 11, ...
Comment gérer une base de données locale ? Pour gérer une base de données locale : - Utilisez la fonction SQLConnecte en code navigateur pour vous connecter à la base de données locale. Par exemple :
// Connexion à une base de données navigateur nommée "BaseLocale" // La base de données est créée si elle n'existe pas SQLConnecte("BaseLocale", "", "", "", "Web SQL database")
- Utilisez la fonction SQLExec pour réaliser des requêtes sur la base de données locale.
Attention : Les requêtes SQL sont exécutées de manière asynchrone. La syntaxe de la fonction SQLExec utilise donc une procédure spécifique. Cette procédure est lancée à la fin de l'exécution réelle de la requête (quelque soit le résultat de la requête). Cette procédure navigateur permet de : - tester la bonne exécution de la requête. La fonction SQLInfoGene est automatiquement exécutée à l'appel de la procédure. Les variables SQL sont donc toutes positionnées. Si une erreur est survenue, SQL.erreur sera différente de "00000". Le message d'erreur pourra être connu grâce à la variable SQL.MesErreur.
- parcourir le résultat de la requête.
Si de nouvelles requêtes sont exécutées dans cette procédure (par exemple pour ajouter des enregistrements), il est possible : - soit d'utiliser la même procédure : le paramètre de cette procédure permet de connaître la requête en cours d'exécution.
- soit d'utiliser une procédure navigateur différente pour tester le résultat de ces nouvelles requêtes.
Remarques : - Lors de la sortie de la procédure navigateur, les valeurs renvoyées par la fonction SQLInfoGene sont rétablies. Si ces valeurs ont été modifiées dans la procédure navigateur, elles sont écrasées.
- Pour connaître les ordres SQL utilisables, consultez la documentation des bases de données de type "Web SQL database".
Fonctions SQL disponibles Les fonctions SQL disponibles en code Navigateur sont les suivantes :
| | SQLAvance | Passe à la ligne suivante (c'est-à -dire à l'enregistrement suivant) du résultat de la requête. | SQLChangeConnexion | Modifie la connexion en cours. | SQLColonne | Renvoie les caractéristiques de toutes les colonnes (ou rubriques) :- soit d'une table donnée.
- soit d'une requête donnée.
| SQLConnecte | Connecte l'application en cours à une base de données à interroger par SQL. | SQLDéconnecte | Ferme la connexion en cours et libère l'espace mémoire utilisé par la connexion. | SQLExec | Nomme et exécute une requête SQL. | SQLFerme | Déclare la fin d'exécution d'une requête et libère les ressources mémoire allouées lors de l'exécution de la requête. | SQLInfoGene | Initialise les différentes variables SQL avec les informations relatives à la dernière requête exécutée. | SQLLitCol | Récupère le contenu de la colonne spécifiée dans le résultat de la requête, pour la ligne en cours. | SQLReqExiste | Teste l'existence d'une requête. |
Exemple : Enregistrer en local les données d'un site déconnecté WEBDEV permet la mise en place de sites déconnectés. Si ce type de site doit enregistrer des données pendant la durée de la déconnexion, il est possible d'utiliser une base de données locale. Les étapes Les étapes sont les suivantes : - Connexion à la base de données
La connexion à la base de données est réalisée grâce à la fonction SQLConnecte. Par exemple :
SQLConnecte("","","", "RDVClients", "Web SQL database")
- Création de la base de données locale
Avant d'utiliser une base locale, il est nécessaire de la créer. Pour cela, il suffit d'utiliser une requête de type CREATE TABLE. Cette requête doit être exécutée via la fonction SQLExec. Par exemple :
sRequête est une chaîne // Code de création de la table sRequête = [ CREATE TABLE IF NOT EXISTS "RendezVous" ("IDRendezVous"  INTEGER PRIMARY KEY , "DateHeureDebut" VARCHAR(16) , "Client" VARCHAR(100) , "Adresse" VARCHAR(200) , "Resume" LONGVARCHAR ); ] // Exécution de la requête SQLExec(sRequête, "REQ_CREATION", _cbRequete)
Lorsque la requête "REQ_CREATION" est terminée, la procédure _cbRequete est exécutée. Dans cet exemple, cette procédure permet de gérer toutes les requêtes exécutées et d'effectuer un traitement approprié après la requête. La requête de création ne doit être utilisée qu'une seule fois, en début de journée par exemple. Par exemple, la base peut être créée uniquement si un paramètre spécifique (par exemple "First") n'est pas passé aux pages. - Accès au données locales ou distantes
Dans cet exemple, le site peut être utilisé en mode connecté ou déconnecté. Il doit être possible d'accéder à la base locale (en mode déconnecté) ou à la base distante (en mode connecté). Tous les accès (création, modification, supÂpression, ...) à la base locale doivent être effectués via la procédure SQLExec. Les accès à la base distante peuvent toujours être effectués via les fonctions Hxxx. Il est cependant nécessaire : - d'exécuter ces fonctions dans un code navigateur, donc en AJAX, via la fonction AJAXExécute.
- d'être sûr que le navigateur est connecté (fonction NavigateurEstConnecté).
Par exemple :
sRequête est une chaîne // Le navigateur est connecté SI NavigateurEstConnecté() = Vrai ALORS // Enregistre dans la base de données distante (serveur) AJAXExécute(SauveDonnées, SAI_ID, SAI_RESUME) FIN sRequête = [ UPDATE RendezVous SET Resume='%2' WHERE IDRendezVous=%1 ]  // Dans tous les cas, enregistre dans la base de données locale SQLExec(ChaîneConstruit(sRequête, gnIDRDVNav,SAI_RESUME), "REQ_SAUVEGARDE", _cbRequete)
Récupérer des enregistrement de la base distante Pour récupérer des enregistrements de la base distante (serveur) dans la base locale (pour l'initialiser par exemple), il suffit de : - Parcourir les enregistrements et mémoriser les rubriques sous forme de chaînes, dans une procédure Serveur.
PROCÉDURE RécupèreEnreg() POUR TOUT MonFichier1 sListe += [RC] + MonFichier1.Rubrique1 + TAB + ... MonFichier1.Rubrique2 + TAB + MonFichier1.Rubrique3 FIN RENVOYER sListe
- Récupérer cette liste en code navigateur :
// Récupère la liste sListe = AJAXExécute(RécupèreEnreg)
- Parcourir la chaîne et extraire les informations à l'aide de la fonction ExtraitChaîne. Les enregistrements peuvent ainsi être ajoutés facilement avec une requête d'ajout (INSERT).
Récupérer les données locales pour mettre à jour la base distante De la même manière, il est possible de récupérer les données de la base locale pour mettre à jour la base distante. Il suffit de : - Exécuter une requête en locale pour récupérer les enregistrements. Par exemple, pour récupérer les rendez-vous de la journée :
// Exécute la requête qui sélectionne les rendez-vous de la journée sRequête est une chaîne sRequête = ChaîneConstruit("SELECT IDRendezVous,Resume FROM RENDEZVOUS " + ... "WHERE DateHeureDebut LIKE '%1%' ORDER BY DateHeureDebut ASC;", DateDuJour()) // Lance la requête SQLExec(sRequête, "REQ_SYNCHRONISERDV", _cbRequete)
- Dans la procédure de vérification lancée par la fonction SQLExec, il suffit d'exécuter une procédure de mise à jour de la base distante grâce à la fonction AjaxExécute. Dans notre exemple, la procédure navigateur __SynchoniseBase est lancée :
PROCÉDURE _SynchroniseBase(sRequête)  // Tant qu'il existe des rendez-vous à synchroniser TANTQUE SQLAvance(sRequête) = 0 // Synchronise le rendez-vous AJAXExécute(_SynchroniseUnRendezvousDistant, SQLLitCol(sRequête, 1), SQLLitCol(sRequête, 2)) FIN
Remarque : La mise à jour de la base de données distante peut être provoquée lors de la re-connexion au serveur. Lors de la reconnexion au serveur, l'événement "Passage en mode connecté" est exécuté. Ce traitement est un traitement optionnel de la page.
Pour l'afficher sous l'éditeur de code, il suffit de : - Afficher le code de la page.
- Cliquer sur le lien "Ajouter d'autres événements à xxx" situé à la fin de la fenêtre de code, après le dernier événement.La totalité des événements optionnels disponibles pour la page est affichée.
- Sélectionner l'événement "Passage en mode connecté".
- Valider.
- Saisir le code de mise à jour de la base de données distante.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|