SQLite dans le local-storage du navigateur.

Partagez votre expérience de SpiderBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

SQLite dans le local-storage du navigateur.

Message par falsam »

Avec la version 2.20 de SpiderBasic il est possible de créer une base de données dans le local storage de votre navigateur.

C'est ce que je vous propose de faire avec ce code concocter par Peter (Alias Kiffi)

Code : Tout sélectionner

If OpenDatabase(0)
  Debug "OpenDatabase(): OK"
  
  ;Création d'une table
  DatabaseUpdate(0, "Create Table SuperHeroes (Prename TEXT, Surname TEXT)")
  
  ;Insertion de quelques enregistrements
  DatabaseUpdate(0, "Insert Into SuperHeroes (Prename, Surname) Values ('Peter', 'Parker')")
  DatabaseUpdate(0, "Insert Into SuperHeroes (Prename, Surname) Values ('Bruce', 'Wayne')")
  DatabaseUpdate(0, "Insert Into SuperHeroes (Prename, Surname) Values ('Clark', 'Kent')")
  
  ;Selection d'un enregistrement
  If DatabaseQuery(0, "Select * From SuperHeroes Where Prename = 'Peter'")
    
    ;Affichage du résultat
    While NextDatabaseRow(0)
      Debug GetDatabaseString(0, 1) + "," + GetDatabaseString(0, 0)
    Wend
    FinishDatabaseQuery(0)
    
  Else
    
    ;Ooops une erreur 
    Debug "DatabaseQuery() failed"
    Debug DatabaseError() 
  EndIf
  CloseDatabase(0)
Else
  Debug "OpenDatabase() failed"
EndIf
Attention j'ai pu constaté que cette base de données n'est pas persistante.

:idea: Voir ce code pour une base de données persistante sous Android par exemple
https://www.purebasic.fr/french/viewtop ... 42#p200842
Dernière modification par falsam le jeu. 09/août/2018 13:56, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: SQLite dans le local-storage du navigateur.

Message par Shadow »

Je trouve ce moyen de sauvegarde pas efficace.
Pour les jeu par exemple.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: SQLite dans le local-storage du navigateur.

Message par falsam »

Shadow a écrit :Je trouve ce moyen de sauvegarde pas efficace.
Pour les jeu par exemple.
je t'en prie j'ai hâte de voir ta proposition de code. Pas de parlotte juste un code.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: SQLite dans le local-storage du navigateur.

Message par Marc56 »

Attention j'ai pu constaté que cette base de données n'est pas persistante.
Ce qui est normal: tout code qui s'exécute dans un navigateur (SB ou autre) ne peut avoir accès qu'aux ressources dans le navigateur lui-même (ram, cookie ou cache du navigateur (de sa propre session))
parfois aux ressources serveur (si paramétré pour)
mais en aucun cas aux ressources locales client sans interaction volontaire de l'utilisateur (filerequester) (heureusement).

La base de données est créée en ram.
Par contre il est possible de charger/décharger manuellement pour la session en cours.

Dixit Fred: "To understand how the database works: it's always created in memory and stay in memory. You have to use the regular file functions to persist it. You can persist any files now, not just database."

:wink:
Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

Salut,

A ce sujet il n'y a pas moyen de demander à SPB de créer un fichier sqlite mais sur le serveur de manière transparente (pour la persistance) ?
Sinon après il faut utiliser des bdd comme mySQL ou SQL mais je sais pas si cela se fait avec SB.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

Merci de l'exemple, le local storage est situé où par contre ? (question à la con lol)
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

Ben... Ca dépend. En gros, c'est soit dans le cache de ton navigateur dans le cas d'une web app, soit dans la sandbox dans laquelle ton app est exécutée dans le cas d'une app Android/iOS. Dans tous les cas, c'est pas un espace avec une adresse fixe (à la /home/poshu/monfichier quoi), puisque une application spiderbasic est forcément sandboxée.
Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

On aurait pu imaginer dans le cas d'une webapp, la possibilité d'écrire un fichier sqlite sur le serveur directement par transparence vu que par définition, la webapp se situe sur le serveur, le soucis c'est que le js est exécuté côté client :D
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

Et on appellerait ça une faille de sécurité.

Ceci dit, c'est pas compliqué à faire hein.
Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

Oui c'est pour cela qu'avec le js côté serveur on est limité, sauf si on couple node et cie mais là ca devient l'usine à gaz. J'ai cru comprendre que spiderbasic allait proposer une partie côté serveur à un moment donné.

La lib database permet le sqlite. je vais regarder sur le forum off et dans la doc si il y a la possibilité d'appeler une base mySQL par ex ^^
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

C'est comme une application PB : c'est exécuté chez le client.

Pas possible d'utiliser mySQL, ça n'apporterait de toutes façons rien par rapport à SQLite.
Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

Bah si justement, pour une webapp : pour la persistance des données sur un serveur. On peut imaginer une appli web avec login et cie ou même une bdd persistante tout cours. Le Sqlite tu vides le cache et t'as plus rien donc c'est persistant sans l'être quelque part ^^

Quand on faisait de la webapp lors de ma formation master, en java, tout était pour la persistance des données sur un modèle MVC et DAO mais bon là on était sur une composante client/serveur avec java donc c'est différent.

Sur SB c'est que l'appli n'est lancé que chez le client avec le js finalement et il n'y a pas vraiment de côté serveur pour le moment. Ou alors faut s'amuser avec un composant server (php ou autre) et de l'http request. En fait SB est plus fait pour de l'appli mobile (ou le local storage prend tout son sens) pour le coup car en webapp (sur un pc) je vois pas l'intérêt, autant le faire en purebasic avec un exécutable.

Je sais pas où j'ai lu cela mais j'ai lu quelque part cet après midi qu'il y aurait peut être bien un jour un côté "serveur" pour SB, je ne sais plus où je l'ai vu. En tout cas je suis ses évolutions (patch note) depuis quelques temps. On va voir où il va nous amener :mrgreen:
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Re: SQLite dans le local-storage du navigateur.

Message par poshu »

Non. Non, se connecter à une db type mysql à distance, c'est jamais une solution. Pire : si ta database permet une connexion a distance, c'est que tu ne sais pas la configurer : c'est un peu le B-A BA de l'administration serveur...

Tu ne demande pas à une app PB de se connecter directement et comme par magie à un autre ordinateur? Bah SB, c'est pareil : tu peux dev un serveur adapté à ton programme, d'ailleurs PB le fera très bien, jette un coup d’œil sur la lib CGI... Et si un jour SB produit du code coté serveur, il faudra l’exécuter via node et ça ne dispensera pas d'écrire le serveur en lui même...
Avatar de l’utilisateur
Crystal Noir
Messages : 891
Inscription : mar. 27/janv./2004 10:07

Re: SQLite dans le local-storage du navigateur.

Message par Crystal Noir »

Non j'ai du mal m'exprimer, la connexion dans mon cas n'est pas lancé côté client ! Ce que vois l'utilisateur ce n'est que la partie View. Tout le reste il n'y a pas accès, c'est la partie modèle (classe) et DAO. Comme je t'ai dit dans cette idée on est dans un cas client/serveur avec une partie lancé sur serveur et uniquement sur le serveur lui même et pas côté client. La partie cliente ce n'est que la partie view de l'appli. Donc dans ce cas, c'est l'appli côté serveur qui lance la connexion pas le client.

En gros dans une même appli qui est hébergée, l'utilisateur ne voit que les views (l'interface) tout ce qu'il y a derrière est traité côté serveur et l'utilisateur n'y a pas du tout accès c'est le principe du MVC avec un pattern DAO. L'utilisateur fait une demande, le contrôleur la traite côté serveur, et renvoie le résultat dans une "view" en l'occurence la gui ou la page web.

C'est ce qui serait intéressant de pouvoir faire en sb sans avoir à utiliser 25 outils 52 pirouettes ^^
Répondre