热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[转]html5js访问sqlite数据库的操作类

本文转自:http:blog.csdn.nettsxw24articledetails7613815webkit核心的浏览器提供了3个api接口,用于访问本地sqlite数据,但

本文转自:http://blog.csdn.net/tsxw24/article/details/7613815

webkit 核心的浏览器提供了 3个 api接口,用于访问本地sqlite数据,但使用起来很不方便 故而做这个js封装,以方便使用

 

参考文章:

sqlite API 说明  

http://www.mhtml5.com/resources/html5-js-api%E6%95%99%E7%A8%8B%EF%BC%88%E4%B8%89%EF%BC%89-%E6%9C%AC%E5%9C%B0%E6%95%B0%E6%8D%AE%E5%BA%93

另外的操作类 

 http://levi.cg.am/?p=1679

sqlite 语法

http://blog.csdn.net/ejzhang/article/details/6224915

 

[Javascript] view plain copy print?
  1. /** 
  2.  * js 操作数据库类 
  3.  *  
  4.  * @author 肖武  
  5.  */  
  6.   
  7. /** 
  8.  * 1、数据库名(mydb) 
  9.  
  10. 2、版本号(1.0) 
  11.  
  12. 3、描述(Test DB) 
  13.  
  14. 4、数据库大小(2*1024*1024)  
  15.  */  
  16. var DB = function( db_name, size ){  
  17.      var _db = openDatabase(db_name, '1.0.0','', size );  
  18.        
  19.      return {  
  20.            
  21.          /** 
  22.           * 执行sql,回调返回影响条数 
  23.           */  
  24.          execute:function( sql, param, callback ) {  
  25.              //参数处理  
  26.             if( !param ){  
  27.                 param = [];  
  28.             }else if(typeof param == 'function' ){  
  29.                 callback = param;  
  30.                 param = [];  
  31.             }  
  32.                
  33.              this.query( sql, param, function(result){  
  34.                  if( typeof callback == 'function' ){  
  35.                      callback(result.rowsAffected);  
  36.                  }  
  37.              });  
  38.          },  
  39.   
  40.          /** 
  41.           * 执行sql,回调返回sql查询对象 
  42.           * 查询时,有数据返回数组,无数据返回0 
  43.           * 增删改时:返回int,影响条数 
  44.           * void query( string[, function]) 
  45.           * void query( string[, array[, function]]) 
  46.           */  
  47.          query:function(sql, param, callback){  
  48.             //参数处理  
  49.             if( !param ){  
  50.                 param = [];  
  51.             }else if(typeof param == 'function' ){  
  52.                 callback = param;  
  53.                 param = [];  
  54.             }  
  55.               
  56.             var self=this;  
  57.             //只有一个参数  
  58.             _db.transaction(function (tx) {  
  59.                 //4个参数:sql,替换sql中问号的数组,成功回调,出错回调  
  60.                 tx.executeSql(sql,param,function(tx,result){  
  61.                     if (typeof callback == 'function' ){  
  62.                         callback(result);  
  63.                     }  
  64.                 },self.onfail) ;  
  65.             })  
  66.         },  
  67.         /** 
  68.          * 插入,回调返回last id 
  69.          * void insert( string, object[, function]) 
  70.          */  
  71.         insert:function( table, data, callback ){  
  72.             if( typeof data != 'object' && typeof callback == 'function' ){  
  73.                 callback(0);  
  74.             }  
  75.               
  76.             var k=[];  
  77.             var v=[];  
  78.             var param=[];  
  79.             for(var i in data ){  
  80.                 k.push(i);  
  81.                 v.push('?');  
  82.                 param.push(data[i]);  
  83.             }  
  84.             var sql="INSERT INTO "+table+"("+k.join(',')+")VALUES("+v.join(',')+")";  
  85.               
  86.             this.query(sql, param, function(result){  
  87.                 if ( typeof callback == 'function' ){  
  88.                     callback(result.insertId);  
  89.                 }  
  90.             });  
  91.         },  
  92.         /** 
  93.          * 修改,回调返回影响条数 
  94.          * void update( string, object[, string[, function]]) 
  95.          * void update( string, object[, string[, array[, function]]]) 
  96.          */  
  97.         update:function( table, data, where, param, callback ){  
  98.             //参数处理  
  99.             if( !param ){  
  100.                 param = [];  
  101.             }else if(typeof param == 'function' ){  
  102.                 callback = param;  
  103.                 param = [];  
  104.             }  
  105.               
  106.             var set_info = this.mkWhere(data);  
  107.             for(var i=set_info.param.length-1;i>=0; i--){  
  108.                 param.unshift(set_info.param[i]);  
  109.             }  
  110.             var sql = "UPDATE "+table+" SET "+set_info.sql;  
  111.             if( where ){  
  112.                 sql += " WHERE "+where;  
  113.             }  
  114.               
  115.             this.query(sql, param, function(result){  
  116.                 if( typeof callback == 'function' ){  
  117.                     callback(result.rowsAffected);  
  118.                 }  
  119.             });  
  120.         },  
  121.           
  122.         /** 
  123.          * 删除 
  124.          * void toDelete( string, string[, function]]) 
  125.          * void toDelete( string, string[, array[, function]]) 
  126.          */  
  127.         toDelete:function( table, where, param, callback ){  
  128.             //参数处理  
  129.             if( !param ){  
  130.                 param = [];  
  131.             }else if(typeof param == 'function' ){  
  132.                 callback = param;  
  133.                 param = [];  
  134.             }  
  135.               
  136.             var sql = "DELETE FROM "+table+" WHERE "+where;  
  137.             this.query(sql, param, function(result){  
  138.                 if( typeof callback == 'function' ){  
  139.                     callback(result.rowsAffected);  
  140.                 }  
  141.             });  
  142.         },  
  143.           
  144.         /** 
  145.          * 查询,回调返回结果集数组 
  146.          * void fetch_all( string[, function] ) 
  147.          * void fetch_all( string[, param[, function]] ) 
  148.          */  
  149.         fetchAll:function( sql, param, callback ){  
  150.             //参数处理  
  151.             if( !param ){  
  152.                 param = [];  
  153.             }else if(typeof param == 'function' ){  
  154.                 callback = param;  
  155.                 param = [];  
  156.             }  
  157.               
  158.             this.query( sql, param, function(result){  
  159.                 if (typeof callback == 'function' ){  
  160.                     var out=[];  
  161.                       
  162.                     if (result.rows.length){  
  163.                         for (var i=0;i
  164.                             out.push(result.rows.item(i));  
  165.                         }  
  166.                     }  
  167.                   
  168.                     callback(out);  
  169.                 }  
  170.             });  
  171.         },  
  172.           
  173.         /** 
  174.          * 查询表的信息 
  175.          * table_name: 表名称,支持 % *, 
  176.          */  
  177.         showTables:function( table_name, callback){  
  178.             this.fetchAll("select * from sqlite_master where type='table' and name like ?", [table_name], callback);  
  179.         },  
  180.           
  181.           
  182.         /** 
  183.          * 组装查询条件 
  184.          */  
  185.         mkWhere:function(data){  
  186.             var arr=[];  
  187.             var param=[];  
  188.             if( typeof data === 'object' ){  
  189.                 for (var i in data){  
  190.                     arr.push(i+"=?");  
  191.                     param.push(data[i]);  
  192.                 console.log('data.i:'+i);  
  193.                 }  
  194.             }  
  195.             return {sql:arr.join(' AND '),param:param};  
  196.         },  
  197.           
  198.         /** 
  199.          * 错误处理 
  200.          */  
  201.         onfail:function(tx,e){  
  202.             console.log('sql error: '+e.message);  
  203.         }  
  204.      }  
  205. }  
  206.   
  207. /* 
  208. //使用示例: 
  209. //1.获取db对象,连接数据库 test,分配2M大小 
  210. var db = new DB('test',1024*1024*2); 
  211.  
  212. //2.创建表 
  213. d.query("CREATE TABLE ids (id integer primary key autoincrement , ctime integer)"); 
  214.  
  215. //3.查看已经创建的表,支持表名通配符搜索。如:"%"查询所有表,"user_%"查询"user_"开头的表 
  216. db.showTables("%",function(ret){console.log(ret)}) 
  217.  
  218. //4.查询表里数据 
  219. db.fetchAll('select * from ids',function(ret){console.log(ret)}); 
  220.  
  221. //5.修改 
  222. db.update('ids',{ctime:123},"id=?",[1],function(ret){console.log(ret)}); 
  223.  
  224. //6.删除 
  225. db.toDelete('ids',"id=?",[1],function(ret){console.log(ret)}); 
  226.  
  227. //7.其它,如删表 
  228. db.query('drop table ids'); 
  229.  
  230.  */  

 


推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Python爬取豆瓣数据实现过程解析
    这篇文章主要介绍了Python爬取豆瓣数据实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值, ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了正则表达式python相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 所有设备的CSS3媒体查询原文:https://www. ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Python爬虫爬点大家喜欢的东西
    要说最美好的欲望莫过于看黑丝美眉。一、技术路线requests:网页请求BeautifulSoup:解析html网页re:正则表达式& ... [详细]
  • SQLite3是一个广泛使用的数据库,从linux,windows到安卓都有SQLite的应用。本文介绍SQLite3在windows上的编译。SQLite3提供了多种源代码的下载 ... [详细]
author-avatar
牛玺峻国_781
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有