文档章节

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

kisshua
 kisshua
发布于 2014/02/20 11:09
字数 661
阅读 107
收藏 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');

本文转载自:http://www.open-open.com/lib/view/open1338364687589.html

共有 人打赏支持
kisshua
粉丝 31
博文 176
码字总数 35430
作品 0
武汉
后端工程师
私信 提问
Nitobi推出的Windows Phone“芒果”适用的PhoneGap

Nitobi,移动跨平台PhoneGap的应用程序开发框架制造商,联合微软释放了一个新的测试版的Windows Phone 7“芒果”PhoneGap。Nitobi和微软已经宣布,PhoneGap这个HTML5支持跨平台的移动应用程序...

PhoneGap
2011/09/14
0
0
Adobe 宣布收购 PhoneGap

Adobe 今天发布消息称购买了 PhoneGap。 我们还高兴地宣布,收购私人持有的Nitobi软件,PhoneGap和PhoneGap Build的开发者。 PhoneGap是一款容易使用HTML5和JavaScript构建跨平台的移动应用的...

小小小
2011/10/04
2.4K
4
使用 Jo 和 PhoneGap 构建本地移动应用程序

移动应用程序开发正在飞速发展;一部分原因是出现了可以简化开发的新框架,这种新框架也使传统 web 开发人员可以更快上手。本文将介绍如何利用您已经掌握的 HTML、CSS 和 JavaScript 技能和两...

IBMdW
2012/03/27
1K
0
Phonegap:快速开发跨平台HTML5应用的胶水层

在开发移动应用的过程当中,如果你的应用只定位在一种平台上,这可不是一个好主意,但是为许多不同的平台 Building应用又是一件非常麻烦和非常不爽的事情,因为你会发现每一种手机平台都有自...

红薯
2011/07/12
2.2K
3
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码

按照我一惯得套路,我会先说一点废话。PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来...

Java编程思想
2014/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

使用Maven打包Docker镜像-Jenkins版

前提:Jenkins服务器上安装好Docker,创建Jenkins任务,配置好代码来源,和Build配置: pom.xml中添加docker-maven-plugin: <plugin> <groupId>com.spotify</groupId> <artifactI......

莫在全
6分钟前
0
0
rabbitmq

灰暗
47分钟前
1
0
Flink

flink HA部署 flink搭建,采用分布式部署方式,分别为A,B,C三个节点。其中A为master;A,B,C为worker。 本文使用的用户是hadoop用户(自己新建) 先决条件 Java 1.8.x or higher scala 自己使用...

-九天-
今天
2
0
数据中台和传统数仓的区别

中台系统把业务层同性的算法能力,服务能力,业务能力高度集成,有效组织 ,动态规划。更好的帮助上层业务。 今天就让我们看看关于数据中台的问答吧。 1 Q : 什么是数据中台? A : 数据中台是...

hblt-j
今天
4
0
Java在什么时候会出现内存泄漏

在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对...

群星纪元
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部