当前位置:   article > 正文

js 直接操作sqlite数据库demo_sqlite js

sqlite js

朋友问我浏览器js直接sqlite怎么做。。。?
我一脸的懵逼。。。啥是sqlite。。。。?


然后各种查资料。。。终于有了这个demo。。。。


记录下,后面可能用的到。。。。。

  1. <html lang="en" dir="ltr">
  2. <head>
  3.     <meta charset="utf-8">
  4.     <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
  5.     <meta content="width=device-width; initial-scale=1; maximum-scale=1" name="viewport">
  6.     <title>宇宙已无对手的Demo演示 --- 功能强非常之大的评分 + 数据存储Sqlite Demo演示</title>
  7.     <script type="text/javascript" src="lib/jquery.min.js"></script>
  8.     <script type="text/javascript" src="lib/raty/jquery.raty.js"></script>
  9. </head>
  10. <body>
  11. <div style="width:500px; margin:100px auto;">
  12.     <div class="demo">
  13.         <div style="padding-top: 20px;padding-bottom: 20px">主题:<input type="text" name="theme" id="theme"/></div>
  14.         <div style="padding-top: 20px;padding-bottom: 20px ">
  15.             <div id="starView"></div>
  16.             <div id="function-hint" class="hint">请选择评分</div>
  17.         </div>
  18.         <div style="padding-top: 20px ;padding-bottom: 20px">备注:<textarea id="remark" name="remark"></textarea></div>
  19.         <button id="save">保存</button>
  20.         <button id="read">读数据</button>
  21.     </div>
  22. </div>
  23. <div>
  24.     windows安装sqlite数据库教程:
  25.     <p>https://github.com/kripken/sql.js</p>
  26.     <p>http://www.runoob.com/sqlite/sqlite-installation.html</p>
  27.     <p>https://blog.csdn.net/chaishen10000/article/details/54574060</p>
  28.     <p>https://blog.csdn.net/u012562302/article/details/78362465</p>
  29.     星级评分:
  30.     <p>https://github.com/wbotelhos/raty</p>
  31.     <p>http://www.shouce.ren/example/try?pc=/api/jq/5733e33070c5a/index.html</p>
  32.     IE下使用Sqlite
  33.     <p>https://blog.csdn.net/fhl812432059/article/details/51502724</p>
  34. </div>
  35. <script type="text/javascript" src="./ie.js"></script>
  36. </body>
  37. </html>

ie.js

  1. $(function () {
  2.     function dbConnect(dbFile) {
  3.         var con = new ActiveXObject("ADODB.Connection");
  4.         con.ConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=" + dbFile;
  5.         con.Open();
  6.         return con;
  7.     }
  8.     var db = dbConnect("./test");
  9.     // getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。
  10.     var begin = new Date().getTime();
  11.     $('#starView').raty({
  12.         number: 5,//多少个星星设置
  13.         targetType: 'hint',//类型选择,number是数字值,hint,是设置的数组值
  14.         path: 'lib/raty/images',
  15.         hints: ['差', '一般', '好', '非常好', '全五星'],
  16.         cancelOff: 'cancel-off.png',
  17.         cancelOn: 'cancel-on.png',
  18.         size: 24,
  19.         starHalf: 'star-half.png',
  20.         starOff: 'star-off.png',
  21.         starOn: 'star-on.png',
  22.         target: '#function-hint',
  23.         cancel: false,
  24.         targetKeep: true,
  25.         targetText: '请选择评分',
  26.         precision: false,//是否包含小数
  27.         // score: 该字段是插件自带的一个hidden标签,name=score,如果不想用的话,可以自己配置click
  28.         click: function () {
  29.         }
  30.     });
  31.     $("#read").click(function () {
  32.         //查找数据
  33.         var objRs = db.Execute("SELECT * FROM test");
  34.         var rows = [];
  35.         while (!objRs.eof) {
  36.             var row = {};
  37.             for (var i = 0; i < objRs.fields.count; i++) {
  38.                 var field = objRs.fields(i);
  39.                 row[field.name] = field.value;
  40.             }
  41.             rows.push(row);
  42.             objRs.movenext();
  43.         }
  44.         console.log("共计:" + rows.length + "条数据")
  45.         for (var i = 0; i < rows.length; i++) {
  46.             var row = rows[i];
  47.             console.log(row)
  48.         }
  49.     });
  50.     $("#save").click(function () {
  51.         var field = {};
  52.         $(".demo input,textarea").each(function () {
  53.             field[this.name] = '' + this.value;
  54.         });
  55.         field['begin'] = begin;
  56.         field['end'] = new Date().getTime();
  57.         // 计算开始时间和结束时间的毫秒差
  58.         field['time'] = field.end - field.begin;
  59.         console.log(field);
  60.         // 保证列的顺序和value的顺序是一致的
  61.         var columns = ['theme', 'score', 'remark', 'begin', 'end', 'time'],
  62.             values = [];
  63.         $(columns).each(function (idx, key) {
  64.             var v = field[key]
  65.             if (typeof(v) === "string") {
  66.                 values.push("'" + v + "'");
  67.             } else {
  68.                 values.push(v);
  69.             }
  70.         });
  71.         console.log(values);
  72.         // IE 特别之处
  73.         db.Execute("CREATE TABLE IF NOT EXISTS test (theme TEXT, score INTEGER, remark TEXT, begin INTEGER ,end INTEGER,time INTEGER);");
  74.         var insert = 'INSERT INTO test(theme, score, remark, begin,end,time) VALUES(' + values.join(",") + ')';
  75.         db.Execute(insert);
  76.     });
  77. });

chorme.js

  1. $(function () {
  2.     var db = window.openDatabase("./test", "1.0", "PhoneGap Demo", 200000);
  3.     if (!window.FileReader) {
  4.         alert("Not supported by your browser!");
  5.         return false;
  6.     }
  7.     // getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。
  8.     var begin = new Date().getTime();
  9.     $('#starView').raty({
  10.         number: 5,//多少个星星设置
  11.         targetType: 'hint',//类型选择,number是数字值,hint,是设置的数组值
  12.         path: 'lib/raty/images',
  13.         hints: ['差', '一般', '好', '非常好', '全五星'],
  14.         cancelOff: 'cancel-off.png',
  15.         cancelOn: 'cancel-on.png',
  16.         size: 24,
  17.         starHalf: 'star-half.png',
  18.         starOff: 'star-off.png',
  19.         starOn: 'star-on.png',
  20.         target: '#function-hint',
  21.         cancel: false,
  22.         targetKeep: true,
  23.         targetText: '请选择评分',
  24.         precision: false,//是否包含小数
  25.         // score: 该字段是插件自带的一个hidden标签,name=score,如果不想用的话,可以自己配置click
  26.         click: function () {
  27.         }
  28.     });
  29.     $("#read").click(function () {
  30.         //查找数据
  31.         db.transaction(function (tx) {
  32.             tx.executeSql('SELECT * FROM test', [], function (tx, results) {
  33.                 var rows = results.rows;
  34.                 console.log("共计:" + rows.length + "条数据")
  35.                 for (let i = 0; i < rows.length; i++) {
  36.                     var row = rows[i];
  37.                     console.log(row)
  38.                 }
  39.             }, null);
  40.         });
  41.     });
  42.     $("#save").click(function () {
  43.         var field = {};
  44.         $(".demo input,textarea").each(function () {
  45.             field[this.name] = '' + this.value;
  46.         });
  47.         field['begin'] = begin;
  48.         field['end'] = new Date().getTime();
  49.         // 计算开始时间和结束时间的毫秒差
  50.         field['time'] = field.end - field.begin;
  51.         console.log(field);
  52.         // 保证列的顺序和value的顺序是一致的
  53.         var columns = ['theme', 'score', 'remark', 'begin', 'end', 'time'],
  54.             values = [];
  55.         $(columns).each(function (idx, key) {
  56.             var v = field[key]
  57.             if (typeof(v) === "string") {
  58.                 values.push("'" + v + "'");
  59.             } else {
  60.                 values.push(v);
  61.             }
  62.         });
  63.         /*
  64.         columns.forEach(key => {
  65.             const v = field[key]
  66.             if (typeof(v) === "string") {
  67.                 values.push("'" + v + "'");
  68.             } else {
  69.                 values.push(v);
  70.             }
  71.         });
  72. */
  73.         console.log(values);
  74.         db.transaction(populateDB, errorCB, successCB);
  75.         // 填充数据库
  76.         function populateDB(tx) {
  77.             // tx.executeSql('DROP TABLE IF EXISTS test;');
  78.             tx.executeSql("CREATE TABLE IF NOT EXISTS test (theme TEXT, score INTEGER, remark TEXT, begin INTEGER ,end INTEGER,time INTEGER);");
  79.             const insert = 'INSERT INTO test(theme, score, remark, begin,end,time) VALUES(' + values.join(",") + ')';
  80.             console.log(insert)
  81.             tx.executeSql(insert);
  82.             console.log("insert ok")
  83.         }
  84.         // 事务执行出错后调用的回调函数
  85.         function errorCB(err) {
  86.             console.log("Error processing SQL: ", err);
  87.         }
  88.         // 事务执行成功后调用的回调函数
  89.         function successCB() {
  90.             console.log("success!");
  91.         }
  92.         //
  93.         // var data = db.export();
  94.         //
  95.         // var arraybuff = data.buffer;
  96.         //
  97.         // var blob = new Blob([arraybuff]);
  98.         //
  99.         // var url = window.URL.createObjectURL(blob);
  100.         //
  101.     });
  102. });

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/80475
推荐阅读
相关标签
  

闽ICP备14008679号