websql

/**

 * 数据库操作帮助类

 */

(function() {

db = null;

/**

* 初始化数据库

*/

function initDB() {

if(db == null) {

openDB();

}

}

/**

* 打开数据库

* @param {Object} dbname 数据库名

* @param {Object} version 版本名

* @param {Object} description  描述文本

* @param {Object} dbsize 数据库大小

* @param {Object} callback 回调

*/

dbUtil.openDb = function(dbname, version, description, dbsize, callback) {

try {

if(!window.openDatabase) {

console.log('该浏览器不支持数据库');

return false;

}

db = window.openDatabase(dbname, version, description, dbsize);

return true;

} catch(e) {

if(e == 2) {

console.log("数据库版本无效");

} else {

console.log("未知错误 " + e + ".");

}

return false;

}

}

/**

* 创建数据库

* @param tableName     表名称

* @param fields        表字段

* @param constraint    约束或者字段的其他补充,可以为空,

*  格式如:{"id":"integer primary key autoincrement","app_flow_no":"not null"}

*/

dbUtil.createTable = function(tableName, fields, constraint) {

if(db == null) {

openDB();

}

var sql = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (';

for(i in fields) {

var key = "";

if(typeof(constraint) != "undefined" && typeof(constraint[fields[i]]) != "undefined") {

key = " " + constraint[fields[i]];

}

sql += fields[i] + key + ",";

}

sql = sql.substr(0, sql.length - 1);

sql += ")";

//log(sql);

execSql(sql);

}

/**

* 插入数据

* @param tableName

* @param insertFields

* @param insertParams

*/

dbUtil.insert = function(tableName, insertFields, insertParams) {

var sql = "insert into " + tableName + " (";

var sql2 = " values(";

for(i in insertFields) {

sql += insertFields[i] + ",";

sql2 += "?,"

}

sql = sql.substr(0, sql.length - 1);

sql2 = sql2.substr(0, sql2.length - 1);

sql += ")";

sql2 += ")";

execSql(sql + sql2, insertParams);

}

/**

* 删除数据

* @param tableName

* @param whereStr

* @param wherParams

*/

dbUtil.delete = function(tableName, whereStr, wherParams) {

var sql = "delete from " + tableName;

if(typeof(whereStr) != "undefined" && typeof(wherParams) != "undefined" &&

whereStr != "") {

sql += " where " + whereStr;

}

execSql(sql, wherParams);

}

/**

* 更新数据

* @param tableName 表名称

* @param setFields 要更新的字段数组

* @param setParams 要更新的字段对应的参数数组

* @param whereStr  where语句,如果没有可不传,不包含where关键字,参数用?代替,如:id=? and name=?

* @param wherParams    where语句用到的参数数组,如['111','2222']

*/

dbUtil.update = function(tableName, setFields, setParams, whereStr, wherParams) {

var sql = "update " + tableName + " set ";

for(i in setFields) {

sql += setFields[i] + "=?,";

}

sql = sql.substr(0, sql.length - 1);

if(typeof(whereStr) != "undefined" && typeof(wherParams) != "undefined" &&

whereStr != "") {

sql += " where " + whereStr;

setParams = setParams.concat(wherParams);

}

execSql(sql, setParams);

}

dbUtil.select = function(tableName, selectFields, whereStr, wherParams, callback) {

if(db == null) {

openDB();

}

var sql = "SELECT " + selectFields + " FROM " + tableName;

if(typeof(whereStr) != "undefined" && typeof(wherParams) != "undefined" &&

whereStr != "") {

sql += " where " + whereStr;

}

db.transaction(function(tx) {

tx.executeSql(sql, wherParams, function(tx, results) {

if(results.rows.length < 1) {

if(typeof(callback) == 'function') {

callback(false)

} //没有数据

} else {

if(typeof(callback) == 'function') {

callback(results.rows)

}

}

}, function(tx, error) {

return false;

});

});

}

/**

* 添加数据

* @param {Object} tableName 添加数据的表名

* @param {Object} fields 添加的字段

* @param {Object} values 添加的值

*/

dbUtil.insert = function(tableName, fields, values) {

db.transaction(function(tx) {

if(!fields)

return;

var len = fields.length;

var condition = '';

for(var i = 0; i < len; i++) {

condition +=

}

var sql = 'insert into ' + tableName + '(' + fields.join() + ') values (' + values.join() + ')';

console.log(sql);

tx.executeSql(sql);

});

}

/**

* 插入或更新

* @param tableName

* @param insertFields

* @param insertParams

* @param key           根据该key来判断是否有数据

* @param keyVal       

*/

dbUtil.saveOrUpdate = function(tableName, insertFields, insertParams, key, keyVal) {

if(typeof(key) != "undefined" && typeof(keyVal) != "undefined" &&

key != "") {

select(tableName, insertFields[0], key + "=?", [keyVal], function(rows) {

if(rows) {

updateTable(tableName, insertFields, insertParams, key + "=?", [keyVal]);

} else {

insertFields.push(key);

insertParams.push(keyVal);

insertTable(tableName, insertFields, insertParams);

}

})

} else {

insertTable(tableName, insertFields, insertParams);

}

}

/**

* 执行一段sql

* @param sql

*/

dbUtil.execSql = function(sql, param, callback) {

if(db == null) {

openDB();

}

db.transaction(function(tx) {

tx.executeSql(sql, param, function(tx, result) {

if(typeof(callback) == 'function') {

callback(true)

}

return true;

}, function(tx, error) {

if(typeof(callback) == 'function') {

callback(false)

}

console.log(error);

return false;

});

});

}

})(window.dbUtil = {});

猜你喜欢

转载自blog.csdn.net/lyl614976970/article/details/52712087