sql >> データベース >  >> RDS >> SQLite

cordovaを使用してプロジェクトファイルにローカルに保存されているSqliteデータベースファイル[アセットフォルダ]にアクセスして更新する方法

    以下のSnippet.

    This snippet contains all the part from Data base creation to Insert , Edit , Delete , Update and Display data データベースの。

    注: Change your Database name and Table name and Database fields here whatever you want to keep

    <script type="text/javascript" charset="utf-8">
    
            // Wait for Cordova to load
            //
            document.addEventListener("deviceready", onDeviceReady, false);
    
            var currentRow;
            // Populate the database
            //
            function populateDB(tx) {
                tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id INTEGER PRIMARY KEY AUTOINCREMENT, name,number)');
            }
    
            // Query the database
            //
            function queryDB(tx) {
                tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
            }
    
            function searchQueryDB(tx) {
                tx.executeSql("SELECT * FROM DEMO where name like ('%"+ document.getElementById("txtName").value + "%')",
                        [], querySuccess, errorCB);
            }
            // Query the success callback
            //
            function querySuccess(tx, results) {
                var tblText='<table id="t01"><tr><th>ID</th> <th>Name</th> <th>Number</th></tr>';
                var len = results.rows.length;
                for (var i = 0; i < len; i++) {
                    var tmpArgs=results.rows.item(i).id + ",'" + results.rows.item(i).name
                            + "','" + results.rows.item(i).number+"'";
                    tblText +='<tr onclick="goPopup('+ tmpArgs + ');"><td>' + results.rows.item(i).id +'</td><td>'
                            + results.rows.item(i).name +'</td><td>' + results.rows.item(i).number +'</td></tr>';
                }
                tblText +="</table>";
                document.getElementById("tblDiv").innerHTML =tblText;
            }
    
            //Delete query
            function deleteRow(tx) {
              tx.executeSql('DELETE FROM DEMO WHERE id = ' + currentRow, [], queryDB, errorCB);
            }
    
            // Transaction error callback
            //
            function errorCB(err) {
                alert("Error processing SQL: "+err.code);
            }
    
            // Transaction success callback
            //
            function successCB() {
                var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                db.transaction(queryDB, errorCB);
            }
    
             // Cordova is ready
            //
            function onDeviceReady() {
                var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                db.transaction(populateDB, errorCB, successCB);
            }
    
            //Insert query
            //
            function insertDB(tx) {
                tx.executeSql('INSERT INTO DEMO (name,number) VALUES ("' +document.getElementById("txtName").value
                        +'","'+document.getElementById("txtNumber").value+'")');
            }
    
            function goInsert() {
                var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                db.transaction(insertDB, errorCB, successCB);
            }
    
            function goSearch() {
                var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                db.transaction(searchQueryDB, errorCB);
            }
    
            function goDelete() {
                 var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                 db.transaction(deleteRow, errorCB);
                 document.getElementById('qrpopup').style.display='none';
            }
    
            //Show the popup after tapping a row in table
            //
            function goPopup(row,rowname,rownum) {
                currentRow=row;
                document.getElementById("qrpopup").style.display="block";
                document.getElementById("editNameBox").value = rowname;
                document.getElementById("editNumberBox").value = rownum;
            }
    
            function editRow(tx) {
                tx.executeSql('UPDATE DEMO SET name ="'+document.getElementById("editNameBox").value+
                        '", number= "'+document.getElementById("editNumberBox").value+ '" WHERE id = '
                        + currentRow, [], queryDB, errorCB);
            }
            function goEdit() {
                var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
                db.transaction(editRow, errorCB);
                document.getElementById('qrpopup').style.display='none';
            }
    
        </script>
    

    I am using this code for one of my app and it's working fine.

    編集1:

    注: Please place your db file in wwww directory like for e.g projectpath/www/dbname.db) 。

    For accessing db file from asset folder.

    window.openDatabase({name: "dbname.db", createFromLocation: 1}); 
    

    編集2:

    Just install below plugin in your app

    cordova plugin add https://github.com/brodysoft/Cordova-SQLitePlugin.git
    

    And Try this.

     var db = window.sqlitePlugin.openDatabase({name: "my.db", createFromLocation: 1});
    



    1. '初期通信パケットの読み取り'でMySQLサーバーへの接続が失われました、システムエラー:0

    2. Androidコンテンツプロバイダーに見つからないコンテンツプロバイダーのURLを修正するにはどうすればよいですか?

    3. 重複エントリのエラーを処理するにはどうすればよいですか?

    4. FGCB_ADD_REMOVEラッチ