IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Lire une base de donnée sqlite avec sql.js


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Lire une base de donnée sqlite avec sql.js
    Bonjour,

    J'utilise une base de données sqlite et la bibliothèque sql.js pour faire mes requêtes (ma bdd m'est utile juste pour stocker des users).
    Ca fait des jours que je tourne en rond pour faire des insert dans ma bdd ..

    Je suis repartie de zéro n'ayant pas encore trouvé la solution. Je lisais ma BD avec une requête ajax mais ça m'a mené à rien.
    Pour pouvoir envoyé des infos à la BD il faut ouvrir la BD avec cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var db = new sql.Database(data);
    Data doit être un un array de bits

    Ils donnent cette fonction pour pouvoir le faire mais je ne vois pas du tout comment faire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function bin2Array(bin) {
        'use strict';
        var i, size = bin.length, ary = [];
        for (i = 0; i < size; i++) {
            ary.push(bin.charCodeAt(i) & 0xFF);
        }
        return ary;
    }
    Si quelqu'un a des pistes ça m'aiderais énormément.

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    le navigateur ne peux pas ouvrir une base locale sur le poste du client donc
    la base doit être sur le serveur

    dans ce que tu écrit où est la partie serveur et la partie client.
    qu'utilise tu côté serveur ?

    si ton problème vient de l'accès à la base depuis ton serveur en Node.js
    pote la question sur le forum Node.js

    si ton problème est l'accès de ton client à ton serveur, décris clairement où est le problème.

    A+JYT

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    C'est un projet où je dois tout traiter côté client, je ne peux pas passer par une BDD usuelle qui est interrogée côté serveur avec du PHP ..
    La bibliothèque sql.js permet de faire cela mais là où je bloque c'est pour l'insertion, lire et afficher les résultats ça marche

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    J'ai beau lire https://github.com/kripken/sql.js/ , ça reste pas clair du tout : où est stockée la base ? Dans des fichiers blob, dans une IndexedDB, dans le localStorage ?
    One Web to rule them all

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    C'est stocké dans des fichiers BLOB si j'ai bien tout saisi

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    J'ai trouvé le problème, ça serait un bug de la bibliothèque sql.js que je ne suis pas la seule à rencontrer en ce qui concerne le db.export() d'une database déjà existante.
    Je vais devoir trouver une autre alternative...

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bah de toute manière, à part pour des expérimentations ou des usages sur réseau local, je doute que gérer les bases de données en JavaScript soit une bonne idée :p Si tu voulais t'en servir pour gérer une liste d'utilisateurs, ça aurait impliqué d'envoyer ces fichiers BLOB sur ton serveur pour référence : requêtes ultra-lourdes à chaque get/set et sécurité zéro.
    One Web to rule them all

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    C'est pour une utilisation uniquement sur un réseau local, mon projet m'oblige à tout traiter en client, ce qui complique beaucoup la tâche ...
    J'ai bien réussi à faire ce que je voulais avec la bibliothèque sql.js et d'autres fonctionnalités d'HTML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'mabase.db', true);
    xhr.responseType = 'arraybuffer';
     
     
     
    xhr.onload = function(e) {
    	  var uInt8Array = new Uint8Array(this.response);
    	  var db = new SQL.Database(uInt8Array);
    	  var contents = db.run("ma requête UPDATE");
    	  console.log(contents);
    	  var arraybuff = db.export();
    	  console.log(arraybuff);
    	  var blob = new Blob([arraybuff]);
    	  whriteInBlob(blob);
     
    	  db.close();
    	}	
    xhr.send();
    }
     
     
    function whriteInBlob (blob) {
     
    		// To access the sandboxed file system (meaning two or more apps canât access each others files) you need to initialize the FileSystem object:
     
    		if('webkitRequestFileSystem' in window)
    		{
    		window.requestFileSystem = window.webkitRequestFileSystem;
    		window.requestFileSystem(window.PERSISTENT, 10*1024*1024, onSuccess, onError);
    		}else if('moz_requestFileSystem' in window)
    		{
    			//firefox
    			window.requestFileSystem = window.moz_requestFileSystem;
    			window.requestFileSystem(window.PERSISTENT, 10*1024*1024, onSuccess, onError);
    		}
     
    		function onSuccess(fs) {
    			fs.root.getFile('mabase.db', {create:true}, function(fileEntry){
    				fileEntry.createWriter(function(f) {
    						f.onwriteend = function(event) {};
    						f.onerror = function(err) {};
    						writer.append(blob);
    						f.write(writer.getBlob('text/plain'));
    				})
    			})
    		}
    J'ai trouvé le bout de code pour firefox sur internet mais evidemment le requestFileSystem ne marche que sur Chrome...
    Y'aurait-il un outil permettant d'écrire dans un fichier en javascript compatible avec Firefox ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/05/2014, 12h38
  2. Réponses: 3
    Dernier message: 16/09/2009, 12h24
  3. Réponses: 2
    Dernier message: 21/07/2008, 15h00
  4. Lire une base de données access 2007 avec access 2003
    Par gblanchard dans le forum Runtime
    Réponses: 6
    Dernier message: 08/05/2007, 02h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo