作者:牛玺峻国_781 | 来源:互联网 | 2023-05-19 12:19
本文转自: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?
-
- var DB = function( db_name, size ){
- var _db = openDatabase(db_name, '1.0.0','', size );
-
- return {
-
-
- execute:function( sql, param, callback ) {
-
- if( !param ){
- param = [];
- }else if(typeof param == 'function' ){
- callback = param;
- param = [];
- }
-
- this.query( sql, param, function(result){
- if( typeof callback == 'function' ){
- callback(result.rowsAffected);
- }
- });
- },
-
-
- query:function(sql, param, callback){
-
- if( !param ){
- param = [];
- }else if(typeof param == 'function' ){
- callback = param;
- param = [];
- }
-
- var self=this;
-
- _db.transaction(function (tx) {
-
- tx.executeSql(sql,param,function(tx,result){
- if (typeof callback == 'function' ){
- callback(result);
- }
- },self.onfail) ;
- })
- },
-
- insert:function( table, data, callback ){
- if( typeof data != 'object' && typeof callback == 'function' ){
- callback(0);
- }
-
- var k=[];
- var v=[];
- var param=[];
- for(var i in data ){
- k.push(i);
- v.push('?');
- param.push(data[i]);
- }
- var sql="INSERT INTO "+table+"("+k.join(',')+")VALUES("+v.join(',')+")";
-
- this.query(sql, param, function(result){
- if ( typeof callback == 'function' ){
- callback(result.insertId);
- }
- });
- },
-
- update:function( table, data, where, param, callback ){
-
- if( !param ){
- param = [];
- }else if(typeof param == 'function' ){
- callback = param;
- param = [];
- }
-
- var set_info = this.mkWhere(data);
- for(var i=set_info.param.length-1;i>=0; i--){
- param.unshift(set_info.param[i]);
- }
- var sql = "UPDATE "+table+" SET "+set_info.sql;
- if( where ){
- sql += " WHERE "+where;
- }
-
- this.query(sql, param, function(result){
- if( typeof callback == 'function' ){
- callback(result.rowsAffected);
- }
- });
- },
-
-
- toDelete:function( table, where, param, callback ){
-
- if( !param ){
- param = [];
- }else if(typeof param == 'function' ){
- callback = param;
- param = [];
- }
-
- var sql = "DELETE FROM "+table+" WHERE "+where;
- this.query(sql, param, function(result){
- if( typeof callback == 'function' ){
- callback(result.rowsAffected);
- }
- });
- },
-
-
- fetchAll:function( sql, param, callback ){
-
- if( !param ){
- param = [];
- }else if(typeof param == 'function' ){
- callback = param;
- param = [];
- }
-
- this.query( sql, param, function(result){
- if (typeof callback == 'function' ){
- var out=[];
-
- if (result.rows.length){
- for (var i=0;i
- out.push(result.rows.item(i));
- }
- }
-
- callback(out);
- }
- });
- },
-
-
- showTables:function( table_name, callback){
- this.fetchAll("select * from sqlite_master where type='table' and name like ?", [table_name], callback);
- },
-
-
-
- mkWhere:function(data){
- var arr=[];
- var param=[];
- if( typeof data === 'object' ){
- for (var i in data){
- arr.push(i+"=?");
- param.push(data[i]);
- console.log('data.i:'+i);
- }
- }
- return {sql:arr.join(' AND '),param:param};
- },
-
-
- onfail:function(tx,e){
- console.log('sql error: '+e.message);
- }
- }
- }
-