0
点赞
收藏
分享

微信扫一扫

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');



举报

相关推荐

0 条评论