html5数据库的函数,HTML5 sqllite数据库操作工具函数

这是一个使用Web SQL API封装的数据库操作库,提供了创建数据库、创建表、增删改查等基本操作。通过简单的API调用,可以实现本地数据库的管理和数据交互,支持错误处理和日志记录。适用于前端离线存储和本地数据管理场景。
摘要由CSDN通过智能技术生成

/**

* DBCommon 提供基本的数据库创建,表创建,表增删改查,批量增删改查操作

* 1,数据库创建(同步方式,注意判断浏览器是否支持,数据库是否创建成功)

* 2,表的创建,公共方法,输入参数包括表名称,字段名称 注意回调函数

* 3,数据增加,公共方法,输入参数包括表名称,各个字段名

* 4,数据修改,公共方法,输入参数包括表名称,修改字段值,条件

* 5,数据删除,公共方法,输入参数包括表名称,条件

* 6,表删除,公共方法,输入参数包括表名称

* 7,表查询,公共方法,输入参数包括表名称,查询条件,结果转换

*

*/

/**

* DBCommon 构造函数,创建数据库

*

* @param dbName 数据库名称

* @param version 数据库版本号

* @param displayName 数据库描述

* @param maxSize 数据库最大容量,没有不填

* @param debug 是否开题日志记录

*/

function DBCommon(dbName, version, displayName, maxSize,debug) {

this.debug = debug;

try {

if (!window.openDatabase) {

alert('This browser does not support local database!');

} else {

if(maxSize){

this.db = openDatabase(dbName, version, displayName, maxSize);

}else{

this.db = openDatabase(dbName, version, displayName);

}

}

} catch(e) {

alert('Create local database fail!');

}

}

DBCommon.prototype = {

log : function( msg ){

if( this.debug) {

console.log.apply(console, arguments);

}

},

sqlerrorHandler : function(tx, e) {

console.log.error(e.message);

},

getConnection : function (dbName, version, displayName, maxSize) {

var dbase;

try {

if (!window.openDatabase) {

alert('This browser does not support local database!');

} else {

if(maxSize){

dbase = openDatabase(dbName, version, displayName, maxSize);

}else{

dbase = openDatabase(dbName, version, displayName);

}

}

} catch(e) {

alert('Create local database fail!');

}

return dbase;

},

/**

* 创建表

*

* @param tableName 表名称

* @param fields 字段数组

*/

createTable : function (tableName, fields, callBack) {

var sql = "CREATE TABLE IF NOT EXISTS " + tableName + " (" + fields.join(",") + ")";

this.db.transaction(function (tx) {

tx.executeSql(sql, [], function () {

if (callBack) callBack();

}, this.sqlerrorHandler);

})

log(sql);

return this;

},

/**

* 删除表

*

* @param tableName 表名称

*/

dropTable : function (tableName) {

var sql = "DROP TABLE " + tableName;

this.db.transaction(function (tx) {

tx.executeSql(sql);

})

log(sql);

return this;

},

/**

* 添加数据

*

* @param tableName 表名称

* @param fields 字段名称数组

* @param values 字段值数组

* @param callback 回调函数

*/

insert : function (tableName, fields, values, callback) {

var sql = "INSERT INTO " + tableName + " (" + fields.join(",") + ") VALUES("

+ new Array(fields.length + 1).join(",?").substr(1) + ")";

this.db.transaction(function (tx) {

tx.executeSql(sql, values, function (tx , rs) {if (callback) callback(tx , rs);} , this.sqlerrorHandler);

});

log(sql+values);

return this;

},

/**

* 删除记录

* @param tableName 表名称

* @param pkField 字段名称

* @param value 字段值

* @param callback

* @return

*/

deleteRow : function (tableName, pkField, value, callback){

var sql = "DELETE FROM " + tableName + " WHERE " + pkField + " = ?";

this.db.transaction(function (tx) {

tx.executeSql(sql, [value], null, this.sqlerrorHandler);

if (callback) callback();

})

log(sql+value);

return this;

},

/**

* 删除所有记录

* @param tableName 表名称

* @param pkField 字段名称

* @param value 字段值

* @param callback

* @return

*/

delete : function (tableName, callback){

var sql = "DELETE FROM " + tableName;

this.db.transaction(function (tx) {

tx.executeSql(sql, null, null, this.sqlerrorHandler);

if (callback) callback();

})

log(sql);

return this;

},

/**

* 更新记录(字段名称数组中第一个字段填主键名称,所对应的values的第一个值填主键的值)

* @param tableName 表名

* @param fields 字段名称数组

* @param values 字段值数组

* @param callback

* @return

*/

update : function (tableName, fields, values,callback) {

var len = fields.length;

var sql = "";

for (i = 1; i < len; i++) {

if (i == 1) sql += fields[i] + " = '" + values[i] + "'";

else sql += "," + fields[i] + " = '" + values[i] + "'";

}

sql = 'UPDATE ' + tableName + ' SET ' + sql + ' where ' + fields[0] + '= ?';

this.db.transaction(function (tx) {

tx.executeSql(sql, [values[0]],

null, this.sqlerrorHandler);

if (callback) callback();

});

log(sql+values[0]);

return this ;

},

/**

* 查询单行数据,在回调函数中处理返回数据

* @param tableName 表名

* @param pkField 字段名

* @param value 字段值

* @param callback

* @return

*/

queryById : function (tableName, pkField, value, callback) {

var sql = 'SELECT * FROM ' + tableName + ' WHERE '+pkField + '= ?'

this.db.transaction(function (tx) {

tx.executeSql(sql, [value], function (tx, result) {

if (callback)

{

var rows = result.rows;

if (rows.length != 0) {

callback(result.rows.item(0));

}else{

callback(null);

}

}

}, this.sqlerrorHandler);

});

log(sql+value);

return this ;

},

/**

* 查询整张表数据

* @param tableName 表名

* @param callback

* @return

*/

queryAll : function (tableName, callback) {

var sql = 'SELECT * from ' + tableName;

this.db.transaction(function (tx) {

tx.executeSql(sql, [], function (tx, result) {

if (callback) callback(result);

}, this.sqlerrorHandler);

});

log(sql);

return this ;

},

/**

* 根据条件查询数据

* @param tableName 表名

* @param queryConditions 查询条件

* @param callback

* @return

*/

query : function (tableName, queryConditions, callback) {

var sql = 'SELECT * from ' + tableName+" WHERE "+ queryConditions

this.db.transaction(function (tx) {

tx.executeSql(sql, [], function (tx, result) {

if (callback) callback(result);

}, this.sqlerrorHandler);

});

log(sql);

return this;

},

/**

* 根据条件最大值

* @param tableName 表名

* @param queryConditions 查询条件

* @param callback

* @return

*/

queryMaxId : function (tableName, callback) {

var sql = 'SELECT MAX(ID) id from ' + tableName;

this.db.transaction(function (tx) {

tx.executeSql(sql, [], function (tx, result) {

if (callback) callback(result);

}, this.sqlerrorHandler);

});

log(sql);

return this;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值