PhoneGap HTML5 DB操作类, 做本地存储

类库优点:
1. 快速建表
2. 封装CURD操作,更加简洁
3. 兼容PhoneGap

4. 自己用着顺手,简化操作

void function(version){ 
     
    var app = function(e) {
        _this.DB;
    }
 
    /**
     * 初始化数据库 
     * @param {String} dbName
     * @param {String} dbVersion
     * @param {String} dbDesc
     * @param {String} dbSize
     */
    app.prototype.dbConnect = function(dbName,dbVersion,dbDesc,dbSize){
         
        try {
            if (!window.openDatabase) {
                console.log('Databases are not supported in this browser.');
                return false;
            } else {
                dbName      = dbName ? dbName : 'SHICAI_APP';
                dbVersion   = dbVersion ? dbVersion : '1.0';
                dbDesc      = dbDesc ? dbDesc : 'SHICAI_DB for User Mobile';
                dbSize      = dbSize ? dbSize : (2 * 1024 * 1024);
                 
                _this.DB = openDatabase(dbName, dbVersion, dbDesc, dbSize); 
                 
                return true;
            }
        } catch(e) {
            if (e == 2) {
                console.log("Invalid database version.");
            } else {
                console.log("Unknown error "+e+".");
            }
            return false;
        }
         
    }
     
    /**
     * 创建表
     * @param {String} tableName
     * @param {Object} tableField
     */
    app.prototype.dbDefineTable = function(tableName,tableField){
     
        if(!tableName || !tableField){
            console.log('ERROR: Function "dbCreateTable" tableName or tableField is NULL.');
        }
        var fieldArr = [];
        var fieldItem;
        var i = 0;
         
        for (var field in tableField){
            field.toString();
            tableField[field].toString();
            fieldArr[i] = field+' '+tableField[field];
             
            i++;
        }
        fieldItem = fieldArr.join(",").toString();
         
        var SQL = 'CREATE TABLE IF NOT EXISTS '+tableName+' (';
        SQL += fieldItem;
        SQL +=')';
        console.log(SQL);
         
        _this.DB.transaction(function(tx){
            tx.executeSql(SQL,[],function(tx,result){
                return true;
            },function(tx,error){
                console.log(error);
                return false;
            });
        }); 
    }
     
    /**
     * 插入数据
     * @param {String} tableName
     * @param {Object} tableField
     * @param {Function} funName
     */
    app.prototype.dbInsert = function(tableName,tableField,funName){
     
        if(!tableField){
            console.log('ERROR: FUNCTION dbInsert tableField is NULL');
            return false;
        }
         
        var fieldKeyArr = [];
        var fieldValueArr = [];
        var fieldKey;
        var fieldValue;
        var i = 0;
         
        for (var field in tableField){
         
            field.toString();
            tableField[field].toString();
            fieldKeyArr[i] = field;
            fieldValueArr[i] = tableField[field];
            if(typeof(fieldValueArr[i]) !== 'number'){
                fieldValueArr[i] = '"'+fieldValueArr[i]+'"';
            }
            i++;
        }
        fieldKey = fieldKeyArr.join(",");
        fieldValue = fieldValueArr.join(",");
 
        var SQL = 'INSERT INTO '+tableName+' (';
        SQL += fieldKey;
        SQL += ') ';
        SQL += 'VALUES (';
        SQL += fieldValue;
        SQL += ')';
        console.log(SQL); 
         
        _this.DB.transaction(function(tx){
            tx.executeSql(SQL,[],function(tx,result){
                funName(result);
            },function(tx,error){
                console.log(error);
                return false;
            });
        }); 
    }
     
    /**
     * 查询所有结果
     * @param {String}  tableName
     * @param {Function} funName
     * @param {Object}  tableField
     * @param {Object}  dbParams
     */
    app.prototype.dbFindAll = function(tableName,funName,tableField,dbParams){
 
        tableField = tableField ? tableField : '*';
        if(!tableName || !funName){
            console.log('ERROR: Function "dbFindAll" tableName or funName is NULL.');
        }
         
        var SQL = '';
        SQL +='SELECT '+tableField+' FROM '+tableName;
         
        _this.DB.transaction(function(tx){
            tx.executeSql(SQL,[],_findSuccess,function(tx,error){
                console.log(error);
                return false;
            });
        });
         
        function _findSuccess(tx,result){
            funName(result);
        }
 
    }
     
    /**
     * 删除数据
     * @param {String}  tableName
     * @param {Object}  dbParams
     * @param {Function} funName
     */
    app.prototype.dbDelete = function(tableName,dbParams,funName){
     
        if(!tableName || !dbParams){
            console.log('ERROR: FUNCTION "dbDelete" tableName or dbParams is NULL');
            return false;
        }
        var SQL = '';
        SQL +='DELETE FROM '+tableName+' WHERE ';
         
        var paramArr = new Array();
        var paramStr = '';
        var i=0;
        for(var k in dbParams){
            if(typeof(dbParams[k]) !== 'number'){
                dbParams[k] = '"'+dbParams[k]+'"';
            }
            paramArr[i] = k.toString()+'='+dbParams[k];
            i++;
        }
        paramStr = paramArr.join(" AND ");
        SQL += paramStr;
         
        _this.DB.transaction(function(tx){
                tx.executeSql(SQL);
            },[],function(tx,result){
                funName(result);
            },function(tx,error){
                console.log(error);
                return false;
            });
        console.log(SQL);
    }
     
    /**
     * 更新数据表
     * @param {String}  *tableName
     * @param {Object}  *dbParams
     * @param {Object}  *dbWhere
     * @param {Function} funName
     */
    app.prototype.dbUpdate = function(tableName,dbParams,dbWhere,funName){
 
        var SQL = 'UPDATE '+tableName+' SET ';
        var paramArr = new Array();
        var paramStr = '';
        var i=0;
        for(var k in dbParams){
            if(typeof(dbParams[k]) !== 'number'){
                dbParams[k] = '"'+dbParams[k]+'"';
            }
            paramArr[i] = k.toString()+'='+dbParams[k];
            i++;
        }
        paramStr = paramArr.join(" , ");
         
        SQL += paramStr;
        SQL += ' WHERE ';
         
        var whereArr = new Array();
        var whereStr = '';
        var n=0;
        for(var w in dbWhere){
             
            if(typeof(dbWhere[w]) !=='number'){
                dbWhere[n] = '"'+dbWhere[w]+'"';
            }
            whereArr[n] = w.toString()+'='+dbWhere[w];
            n++;
        }
         
        whereStr = whereArr.join(" AND ");
         
        SQL += whereStr;
         
        _this.DB.transaction(function(tx){
                tx.executeSql(SQL);
            },[],function(tx,result){
                funName(result);
            },function(tx,error){
                console.log(error);
                return false;
            });
        console.log(SQL);
         
    }
     
    /**
     * 清空数据表
     * @param {String} tableName
     * @return {Boolean}
     */
    app.prototype.dbTruncate = function(tableName){
     
        if(!tableName){
            console.log('ERROR:Table Name is NULL');
            return false;
        }
         
        function _TRUNCATE(tableName){
            _this.DB.transaction(function(tx){
                tx.executeSql('DELETE TABLE '+tableName);
            },[],function(tx,result){
                console.log('DELETE TABLE '+tableName);
                return true;
            },function(tx,error){
                console.log(error);
                return false;
            })
        }
         
        _TRUNCATE(tableName);
    }
     
    /**
     * @desc 删除数据表
     * @param {String} tableName
     * @return {Boolean}
     */
    app.prototype.dbDrop = function(tableName){
         
        if(!tableName){
            console.log('ERROR:Table Name is NULL');
            return false;
        }
         
        function _DROP(tableName){
            _this.DB.transaction(function(tx){
                tx.executeSql('DROP TABLE '+tableName);
            },[],function(tx,result){
                console.log('DROP TABLE '+tableName);
                return true;
            },function(tx,error){
                console.log(error);
                return false;
            })
        }
         
        _DROP(tableName);
    }
     
}('1.0');


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5 app框架是一种用于构建移动应用程序的框架。它提供了丰富的功能和工具,使开发者能够以快速、高效和可维护的方式开发和部署跨平台的应用程序。 目前,市场上有许多流行的HTML5 app框架可供选择,以下是其中一些: 1. Ionic:Ionic是一个基于AngularJS的HTML5 app框架,它提供了丰富的界面组件和工具,使开发者能够轻松构建跨平台的移动应用程序。 2. React Native:React Native是Facebook开发的一个基于React框架的跨平台框架,它允许开发者使用JavaScript编写本地移动应用程序。 3. PhoneGap/Cordova:PhoneGap是一个由Apache开发的开源框架,它使用HTML、CSS和JavaScript构建跨平台的移动应用程序。 4. Flutter:Flutter是Google开发的一个用于构建移动应用程序的框架,它使用Dart编程语言,并提供了丰富的UI库和工具。 前后端分离是一种架构模式,将应用程序的前端和后端分离开发和部署。前端负责展示界面和处理用户交互,后端负责处理业务逻辑和数据存储。 在这种架构模式下,前端可以使用任何适合的框架进行开发,例如React、Vue等。后端可以使用各种后端框架,如Spring、Django等。前后端之间通过API进行通信,前端通过调用API来获取数据和与后端交互。这种架构模式可以提高应用程序的可维护性和灵活性,使前端和后端开发更加独立和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值