一个简单的Cordova android示例包括Sqlite读/写和搜索 [英] A simple Cordova android example including Sqlite read/write and search

查看:621
本文介绍了一个简单的Cordova android示例包括Sqlite读/写和搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Cordova 在我有一个简单的 Sqlite 数据库的android应用程序项目。 p>

I was working on a android app project using Cordova which in I had a simple Sqlite database.

--------------------
ID | Name | Number  |
--------------------

由于我是新的android应用程序,我只是有UI准备好了。我有两个文本输入,一个< div> 标签显示表数据和3 按钮

Since I'm new in android apps, I just Got the UI ready. I have two text inputs, a <div> tag to show the table data and 3 buttons. And when the user taps on each columns, a popup show's up for deleting or editing the row contents.

这是用于UI的 HTML 代码:

 <body>
    <h1>My first App</h1>
    <p>Open Database</p>
    <div id="qrpopup" > //The hidden div tag for implementing the popup
            <hr/>
            <input type="text" id="editNameBox"><br>
            <input type="text" id="editNumberBox"><br>
            <button onclick="goDelete()">Delete</button>
            <button onclick="goEdit()">Edit</button>
            <button onclick="document.getElementById('qrpopup').style.display='none';">Discard</button>
    </div>

    <div>
        Name<input type="text" value="Name" id="txtName">
        Number<input type="text" value="123" id="txtNumber"><hr/>
    </div>
    <div id="tblDiv"></div>
    <div style="text-align: center">
        <button onclick="goInsert()">Insert</button>
        <button onclick="goSearch()">Search</button>
        <button onclick="successCB()">Show All</button>
    </div>
  </body>

我也使用了一些 Css 我的应用程序看起来更好。这是我的 style.css 文件:

Also I used some Css styles to make my app looks better. Here's my style.css file:

input[type='text'] {
       border: 1px solid black;
       width: 200px;
       margin-left: 10px;
}
table {
    width:100%;
}
table, th, td {
              border: 1px solid black;
              border-collapse: collapse;
}
th, td {
    padding: 5px;
    text-align: left;
}
table#t01 tr:nth-child(even) {
    background-color: #eee;
}
table#t01 tr:nth-child(odd) {
    background-color:#fff;
}
table#t01 th    {
    background-color: black;
    color: white;
}
button {
    margin: 10px;
    font: bold 13px "Helvetica Neue", Helvetica, Arial, clean, sans-serif !important;
    text-shadow: 0 -1px 1px rgba(0,0,0,0.25), -2px 0 1px rgba(0,0,0,0.25);
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-box-shadow: 0 1px 2px rgba(0,0,0,0.5);
    -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.5);
    display: inline-block;
    color: white;
    padding: 5px 10px 5px;
    white-space: nowrap;
    text-decoration: none;
    cursor: pointer;
    background-color: #BE3E76;
    border-style: none;
    text-align: center;
    overflow: visible;
}

button:active {
    background-position: 0 -100px;
    -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,0.7);
    -webkit-box-shadow: none;
}

#qrpopup {
    position:fixed;z-index:9999;background-color:rgba(0, 0, 0,0.9);width:100%; height:100%;display:none;
}

但我想知道如何创建插入,编辑,删除和搜索在 Cordova 中使用 javascript

But I want to know how can I create insert, edit, delete and search functions using javascript in Cordova?

推荐答案

所以经过3天的尝试,我终于完成了,我说最好与感兴趣的人分享在 Cordova PhoneGap 中使用 Sqlite 所以这里是答案:

So after 3 days of trying, I finally got it done and I said it's better to share it with people who are interested in using Sqlite database in Cordova and PhoneGap. So here is the answer:

这些脚本可以在< head> code>标签:

These scripts goes on <head> tag:

 <!-- cordova script (this will be a 404 during development) -->
    <script src="cordova.js"></script>
    <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>

就是这样!现在,您可以使用 Cordova Sqlite 数据库中添加,编辑,删除和搜索您的数据。

That's it! Now you can add, edit, delete and search through your data in Sqlite database using Cordova.

希望对有兴趣的人有帮助。

Hope it be helpful for the ones who are interested.

这篇关于一个简单的Cordova android示例包括Sqlite读/写和搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆