12
votes

Base de données SQLite en JavaScript localement

J'utilise un projet PhoneGap sur Xcode. J'essaie de se connecter à une base de données SQLite à l'aide de JavaScript.

J'ai fait un fichier "mydatabase.sqlite" dans un outil SQLite. Maintenant, ma question est de savoir comment puis-je ouvrir cette base de données dans mon code? À l'heure actuelle, j'utilise le code suivant: xxx

Le problème est que la base de données est vide car quand je l'exécute, cela donne l'erreur "Aucune telle table". Je pense que cela a créé une nouvelle base de données nommée "mydatabase" et c'est pourquoi il n'a pas de tables.

Est-ce que quelqu'un sait comment je peux ouvrir mon fichier avec toutes les tables de la table?

Merci !


0 commentaires

4 Réponses :


1
votes

mydatabase et mydatabase.sqlite sont 2 noms de fichiers différents, mettez à jour votre code pour référencer le nom de fichier correct avec une extension.

SQLite crée automatiquement une nouvelle base de données vide si vous essayez d'ouvrir une base de données qui n'existe pas.


1 commentaires

Quand j'utilise le nom mydatabase.sqlite, le programme s'arrête à la commande OpenDatabase (j'ai placé une alerte avant et après cette ligne ... et cela montre la première alerte, mais pas la seconde. C'est pourquoi je pensais que c'est problème ... Vous avez une idée?



12
votes

Ce script vous aidera:

<script type="text/javascript">
      function createDatabase(){
         try{
              if(window.openDatabase){
              var shortName = 'db_xyz';
              var version = '1.0';
              var displayName = 'Display Information';
              var maxSize = 65536; // in bytes
              db = openDatabase(shortName, version, displayName, maxSize);
        }
     }catch(e){
                 alert(e);
           }
     }
     function executeQuery($query,callback){
     try{
         if(window.openDatabase){
         db.transaction(
         function(tx){
         tx.executeSql($query,[],function(tx,result){
         if(typeof(callback) == "function"){
                 callback(result);
         }else{
                 if(callback != undefined){
                       eval(callback+"(result)");
                  }
         }
         },function(tx,error){});
          });
           return rslt;
         }
         }catch(e){}
         }
           function createTable(){
           var sql = 'drop table image';
                 executeQuery(sql);
                 var sqlC = 'CREATE TABLE image (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, image BLOB )';
                 executeQuery(sqlC);
           }
           function insertValue(){
                var img = document.getElementById('image');
                var sql = 'insert into image (name,image) VALUES ("sujeet","'+img+'")';
                executeQuery(sql,function(results){alert(results)});
            }
<input type="button" name='create' onClick="createDatabase()" value='Create Database'>
<input type="button" name='create' onClick="createTable()" value='create table'>
<input type="button" name='insert' onClick="insertValue()" value='Insert value'>
<input type="button" name='select' onClick="showTable()" value='show table'>
<input type="file" id="image" >
<div result></div>
</script>


3 commentaires

Ce code dépose la table avec des données que vous avez déjà faites dans le fichier SQLite? Vous devez donc encore insérer les données dans le code? Toutes mes données que j'ai besoin sont déjà dans le fichier SQLite ..


Le lien que vous avez fourni est mort, pourriez-vous le mettre à jour? Merci


J'ai essayé d'utiliser ce code. J'utilise Cordova pour construire cela comme une application sur iPhone. Mais je reçois Err.Code 5. Pouvez-vous m'aider s'il vous plaît? @Sujeet



1
votes

Dans mon code SQLite, j'utilise trois fichiers JS pour contrôler SQLite One pour un but de débogage, un pour exécuter des requêtes et une autre pour initier la base de données et créer des tables de base.

débogage.js
startup.js
query.js

URL de référence est < / a> http://allinworld99.blogspot.in/2016/04/ sqlite-premier-setup.html
startup.js xxx

débog.js xxx

requête.js xxx


0 commentaires

0
votes

J'ai eu le même problème et j'ai découvert que vous ne pouvez pas utiliser votre dB SQLite comme ceci.

J'ai utilisé chrome et j'ai découvert que Chrome stocke DBS dans "C: \ utilisateurs \% nom_serveur% \ appdata \ local \ google \ chrome \ données utilisateur \ par défaut \ bases de données" .

Il y a un bases de données.db que Chrome utilise pour la gestion de DBS.

Si vous souhaitez utiliser votre DB, vous devez ajouter un enregistrement dans Databases.db et mettre votre fichier dans "Fichier__0" et renommez-le (votre fichier de base de données) à l'ID qui est attribué à cet enregistrement.


0 commentaires