zoukankan      html  css  js  c++  java
  • js 操作本地sqlite

    <!DOCTYPE html>
    <html lang="zh-CN">
    
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="renderer" content="webkit">
        <meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=0.7, maximum-scale=0.7">
        <title>SQLITE 浏览器</title>
        <style>
            table {
                *border-collapse: collapse;
                /* IE7 and lower */
                border-spacing: 0;
            }
    
    
            .table {
                border: solid #ccc 1px;
                box-shadow: 0 1px 1px #ccc;
                font-size: 12px;
                font-family: Courier New, Courier, monospace;
            }
    
    
            .table .highlight,
            .table tr:hover {
                background: #ddd;
            }
    
    
            .table td,
            .table th {
                border-left: 1px solid #ccc;
                border-top: 1px solid #ccc;
                padding: 2px 5px;
                text-align: left;
            }
    
    
            .table th {
                background-color: #dce9f9;
                background-image: linear-gradient(top, #ebf3fc, #dce9f9);
                box-shadow: 0 1px 0 rgba(255, 255, 255, .8) inset;
                border-top: none;
                text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
            }
    
    
            .table td:first-child,
            .table th:first-child {
                border-left: none;
            }
        </style>
        <script src="/js/jquery.min.js"></script>
    
        <script>
            var db = null;
            function openDb(dbName) {
                dbName = dbName || 'db';
                db = openDatabase(dbName, '1.0', 'ENH_sqlite DB', 200 * 1024 * 1024);
                console.log(db);
            }
    
            var isRun = false;
            function runSql(sql) {
                if (db == null) {
                    openDb();
                    if (db == null) return;
                }
                if (!sql) return;
                if (isRun) return;
                isRun = true;
    
                console.time('run');
                db.transaction(function (tx) {
                    tx.executeSql(sql, [], function (tx, res) {
                        isRun = false;
                        console.timeEnd('run');
                        console.log(res);
                        if (res.rowsAffected > 0) {
                            $('#divInfo').css('color', '').html('影响' + res.rowsAffected + '');
                            showTable([]);
                        }
                        else {
                            $('#divInfo').css('color', '').html('获取' + res.rows.length + '条数据');
                            showTable(res.rows);
                        }
                    }, function (tx, err) {
                        isRun = false;
                        console.timeEnd('run');
                        console.error(err);
                        $('#divInfo').css('color', 'red').html(err.message);
                    });
                });
            }
    
            function showTable(rows) {
                $('#tbList thead').html('');
                $('#tbList tbody').html('');
                if (rows.length == 0) return;
    
                var tr = $('<tr></tr>');
                for (var k in rows.item(0)) {
                    tr.append('<th>' + k + '</th>');
                }
                $('#tbList thead').append(tr);
    
                var html = '';
                for (var i=0; i<rows.length; i++) {
                    var r = rows.item(i);
                    html += '<tr>';
                    for (var kk in r) {
                        html += '<td>' + htmlEncode(r[kk]) + '</td>';
                    }
                    html += '</tr>';
                }
                $('#tbList tbody').append(html);
            }
    
            function htmlEncode(str) {
                var ele = document.createElement('span');
                ele.appendChild(document.createTextNode(str));
                return ele.innerHTML;
            }
            function htmlDecode(str) {
                var ele = document.createElement('span');
                ele.innerHTML = str;
                return ele.textContent;
            }
    
            var id = 0;
            function getGps() {
                id++;
                var gps = {
                    id: id,
                    car_no: 'RL0101',
                    lon: 108 + Math.random(),
                    lat: 34 + Math.random(),
                    deg: Math.round(Math.random() * 360),
                    last_id: id - 1,
                    data: '' + (1 + Math.random()) + ',100',
                };
    
                return gps;
            }
    
            function addGpsList(list) {
                if (!list) return;
    
                var key_list = [];
                for (var key in list[0]) {
                    key_list.push(key);
                }
    
                var gps_list = [];
                for (var k in list) {
                    var val_list = [];
                    for (var kk in list[k]) {
                        val_list.push("'" + list[k][kk] + "'");
                    }
                    gps_list.push('(' + val_list.join(',') + ')')
                }
    
                var sql = "INSERT INTO gps_list (" + key_list.join(',') + ") VALUES " + gps_list.join(',');
                runSql(sql);
            }
        </script>
    </head>
    
    <body style="line-height: 1.5;">
        <h3 style="margin:5px 0;">JS sqlite 数据库操作</h3>
        <ul style="font-size:12px; color:gray; padding-left:15px;">
            <li>创建:CREATE TABLE IF NOT EXISTS LOGS (id unique, log)</li>
            <li>插入:INSERT INTO LOGS (id, log) VALUES (1, "foobar")</li>
            <li>查询:SELECT * FROM LOGS</li>
            <li>删除:DELETE FROM LOGS WHERE id = 1</li>
            <li>所有表:SELECT * FROM sqlite_master WHERE type="table";</li>
            <li>删除表:DROP TABLE LOGS</li>
            <li>类型:INTEGER,TEXT,REAL,NUMERIC</li>
        </ul>
        <input id="txtDbName" type="text" value="db" /> <input type="button" value="连接数据库" onclick="openDb($('#txtDbName').val());" /><br>
        <input id="txtSql" type="text" value="SELECT * FROM LOGS" style="600px;" />
        <input type="button" value="执行SQL" onclick="runSql($('#txtSql').val());" /><br>
        <input type="button" value="创建GPS数据库" onclick="runSql('CREATE TABLE IF NOT EXISTS gps_list(id, car_no, lon NUMBER, lat NUMBER, deg NUMBER, last_id, data)');"
        />
        <input type="button" value="添加GPS数据" onclick="addGpsList([getGps(), getGps()]);" />
        <div id="divInfo"></div>
        <table id="tbList" class="table">
            <thead>
            </thead>
            <tbody>
            </tbody>
        </table>
    </body>
    
    </html>
    
    <!--
    常见GPS数据库
    CREATE TABLE IF NOT EXISTS gps_list(id, car_no, lon NUMBER, lat NUMBER, deg NUMBER, last_id, data)
    -->
  • 相关阅读:
    [PHP]搭建Laravel心路历程
    [python爬虫]爬取贴吧某页美女图片+爬取糗百美女图片
    [Python2.7]python关于sys.agrv的使用
    [渗透测试]Sqlmap使用参数说明
    摘录的关于代码维护性的文章片段
    Python文本处理
    增加layer---待完成
    Python小程序——线性时间排序
    Python小程序——快排算法
    Python学习——多进程学习
  • 原文地址:https://www.cnblogs.com/zjfree/p/6490210.html
Copyright © 2011-2022 走看看