2011-03-09 28 views
12

Estoy usando un proyecto PhoneGap en XCode. Estoy tratando de conectarme a un databse SQLite usando Javascript.Base de datos SQLite en Javascript localmente

He creado un archivo "myDatabase.sqlite" en una herramienta de SQLite. Ahora mi pregunta es ¿cómo abro esa base de datos en mi código? En este momento estoy utilizando el siguiente código:

var db; 
var shortName = 'myDatabase'; 
var version = '1.0'; 
var displayName = 'myDatabase'; 
var maxSize = 65535; 


db = openDatabase(shortName, version, displayName,maxSize); 

db.transaction(function(transaction) { 
    transaction.executeSql('SELECT * FROM User;', [], 
    function(transaction, result) { 

     if (result != null && result.rows != null) { 
      for (var i = 0; i < result.rows.length; i++) { 
       var row = result.rows.item(i); 
       alert(row.ID); 
      } 
     } 
    }, errorHandler); 
}, errorHandler, nullHandler); 

El problema es que la base de datos está vacío porque cuando lo funciono da el error 'No existe la tabla'. Creo que creó una nueva base de datos llamada "myDatabase" y es por eso que no tiene tablas.

¿Alguien sabe cómo puedo abrir mi archivo con todas las tablas en él?

Gracias!

Respuesta

11

Este script le ayudará a:

<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> 

Para descargar el código Go url:

http://blog.developeronhire.com/create-sqlite-table-insert-into-sqlite-table/

+2

Este código elimina la tabla con datos que ya ha hecho en el archivo sqlite? ¿Entonces todavía tiene que insertar los datos nuevamente en el código? Todos mis datos que necesito ya están en el archivo SQLite. – Tjekkles

+1

El enlace que has proporcionado está muerto, ¿podrías actualizarlo? Gracias –

+0

Intenté usar este código. Estoy usando cordova para construir esto como una aplicación en iPhone. Pero estoy recibiendo err.code 5. ¿Puedes ayudarme? @Sujeet – Anu

0

myDatabase y myDatabase.sqlite son 2 nombres de archivo diferentes, actualice su código para hacer referencia al nombre de archivo correcto con la extensión.

SQLite crea automáticamente una nueva base de datos vacía si intenta abrir una base de datos que no existe.

+0

Cuando uso el nombre myDatabase.sqlite el programa se detiene en el comando openDatabase (He puesto una alerta antes y después de esa línea ... y se nota la primera alerta, pero no el segundo. Entonces, es por eso que estaba pensando que ese es el problema ... ¿Tengo alguna idea? – Tjekkles

1

En mi código SQLite estoy usando el archivo three.js para controlar uno SQLite para la depuración propósito, uno para ejecutar querys y otro para iniciar la base de datos y crear tablas básicas.

debug.js
startup.js
query.js

Reference URL ishttp://allinworld99.blogspot.in/2016/04/sqlite-first-setup.html
startup.js

var CreateTb1 = "CREATE TABLE IF NOT EXISTS tbl1(ID INTEGER PRIMARY KEY AUTOINCREMENT, CreatedDate TEXT,LastModifiedDate TEXT, Name TEXT)"; 
var CreateTb2 = "CREATE TABLE IF NOT EXISTS tbl2(ID INTEGER PRIMARY KEY AUTOINCREMENT, CreatedDate TEXT,LastModifiedDate TEXT,Mark INTEGER)"; 

var DefaultInsert = "INSERT INTO tbl1(CreatedDate,Name) select '" + new Date() + "','Merbin Joe' WHERE NOT EXISTS(select * from tbl1)"; 

var db = openDatabase("TestDB", "1.0", "Testing Purpose", 200000); // Open SQLite Database 

$(window).load(function() 
{ 
    initDatabase(); 
}); 

function createTable() // Function for Create Table in SQLite. 
{ 

    db.transaction(function(tx) 
    { 
    tx.executeSql(CreateTb1, [], tblonsucc, tblonError); 
    tx.executeSql(CreateTb2, [], tblonsucc, tblonError); 

    insertquery(DefaultSettingInsert, defaultsuccess); 

    }, tranonError, tranonSucc); 
} 

function initDatabase() // Function Call When Page is ready. 
{ 
    try 
    { 
    if (!window.openDatabase) // Check browser is supported SQLite or not. 
    { 
     alert('Databases are not supported in your device'); 
    } 
    else 
    { 
     createTable(); // If supported then call Function for create table in SQLite 
    } 
    } 
    catch (e) 
    { 
    if (e == 2) 
    { 
     // Version number mismatch. 
     console.log("Invalid database version."); 
    } 
    else 
    { 
     console.log("Unknown error " + e + "."); 
    } 
    return; 
    } 
} 

debug.js

function tblonsucc() 
{ 
    console.info("Your table created successfully"); 
} 

function tblonError() 
{ 
    console.error("Error while creating the tables"); 
} 

function tranonError(err) 
{ 
    console.error("Error processing SQL: " + err.code); 
} 

function tranonSucc() 
{ 
    console.info("Transaction Success"); 
} 

query.js

function insertquery(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), insertonError); 
    }); 
} 

function deletedata(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), deleteonError); 
    }); 
} 

function updatedata(query, succ_fun) 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], eval(succ_fun), updateonError); 
    }); 
} 

function selectitems(query, succ_fun) // Function For Retrive data from Database Display records as list 
{ 
    db.transaction(function(tx) 
    { 
    tx.executeSql(query, [], function(tx, result) 
    { 
     eval(succ_fun)(result.rows); 
    }); 
    }); 
} 
Cuestiones relacionadas