javascriptsqliteconnectioncordovalocal

SQLite database in JavaScript locally


I'm using a PhoneGap project on Xcode. I am trying to connect to a SQLite database by using JavaScript.

I have made a file, "myDatabase.sqlite", in an SQLite tool. How do I open that database in my code?

Right now I'm using the following code:

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

The problem is that the database is empty, because when I run it, it gives the error 'No such table'. I think it created a new database named "myDatabase" and that’s why it doesn't have any tables.

How can I open my file with all the tables in it?


Solution

  • This script will help you:

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

    To download the code, go visit this URL:

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