1. 程式人生 > >HTML5 DataBase

HTML5 DataBase

一,web     DataBase
    瀏覽器的本地儲存,離開本機,資料不存在
    使用js語法操作資料庫
    有三個最重要API
        var database = openSatabase(name,v,des,size,callback);
        建立或開啟已有的資料庫
        引數1:資料庫的名稱(如果名稱存在就是開啟,不存在就建立);
        引數2:資料庫版本號
        引數3:資料庫描述
        引數4:資料庫欄位空間大小(B)
        引數5:回撥函式
    2)database.transaction(function(tx){})
        資料庫語句實現的位置在fun中
        fun:是一個函式
    3)tx.executeSql(sql,arr,success,error);
        執行SQL語句的地方
        引數1:SQL語句
        引數2:SQL語句中使用?替代的欄位
        引數3:執行成功的回撥
        引數4:執行失敗的回撥

下面是一個關於DataBase封裝的js

(function(){
	//建立或開啟資料庫
	window.createDataBase = createDataBase;
	//建立表
	window.createTable = createTable;
	//刪除表
	window.deleteTable = deleteTable;
	//新增資料
	window.addData = addData;
	//刪除資料
	window.deleteData = deleteData;
	//清空資料表
	window.clearTable = clearTable;
	//修改資料
	window.updateData = updateData;
	//查詢所有資料
	window.selectAll = selectAll;
	//查詢一條資料
	window.selectOne = selectOne;

	//1,建立或開啟資料庫
	function createDataBase(DBname,v,des,size){
		return openDatabase(DBname,v,des,size,function(){});
	}
	//2,建立表
	function createTable(db,tabName,arr,callback){
		db.transaction(function(tx) {
				var sqlStr = arr.join(',');
				tx.executeSql(
						'create table if not exists '+tabName+' ('+sqlStr+')',
						[],
						function(tx,result) {
							callback && callback(1);
						},
						function(tx,error) {
							callback && callback(0);
						}
					);
			});
	}
	//3,刪除表
	function deleteTable(db,tabName,callback){
		db.transaction(function(tx) {

				tx.executeSql(
						'drop table '+tabName,
						[],
						function(tx,result) {
							callback && callback(1);
						},
						function(tx,error) {
							callback && callback(0);
						}
					);
			});
	}
	//4,新增資料
		function addData(db,tabName,obj,callback){
		var keys='';
		var vals='';
		for(var k in obj){
			keys += k+',';
			if (k=='name') {
				vals+='"'+obj[k]+'",';
			}else{
				vals += obj[k]+','
			}
			
		}
		keys=keys.slice(0,keys.length-1)
		vals=vals.slice(0,vals.length-1)
		var str='insert into '+tabName+' ('+keys+') values('+vals+')';
			db.transaction(function(tx){
				tx.executeSql(
						str,
						[],
						function(tx,result) {
							callback&&callback(1);
						},
						function(tx,error) {
							callback&&callback(0);
						}
					);
			});
		}
	//5,刪除一條資料
	function deleteData(db,tabName,ID,callback) {
		db.transaction(function(tx) {
			tx.executeSql(
				'delete from '+tabName+' where id = ?',
				[ID],
				function(tx,result) {
					callback && callback(1);
				},
				function(tx,error) {
					callback && callback(0);
				}
			)
		});
	}
	//6,刪除所有資料
	function clearTable(db,tabName,callback){
			db.transaction(function(tx) {
				tx.executeSql(
						'delete from '+tabName,
						[ID],
						function(tx,result) {
							callback && callback(1);
						},
						function(tx,error) {
							callback && callback(0);
						}
					)
			});
	}
	//7,更新資料
	function updateData(db,tabName,ID,obj,callback){
		var str = '';
		for (var k in obj) {
			if (k == name) {
				str += k + ' = "' + obj[k] + '",';
			}else{
				str += k + ' = ' + obj[k] + ',';
			}
			
		}
		str = str.slice(0,str.length-1);
		db.transaction(function(tx) {
				tx.executeSql(
						'update '+tabName+' set '+str+' where id = ?',
						[ID],
						function(tx,result) {
							callback && callback(1);
						},
						function(tx,error) {
							callback && callback(0);
						}
					)
			});
	}
	//8,查詢所有資料
	function selectAll(db,tabName,callback) {
		var obj = {};
		db.transaction(function(tx) {
			tx.executeSql(
				'select * from ' + tabName,
				[],
				function(tx,result) {
					obj.res = 1;
					obj.arr = result.rows;
					callback && callback(obj);
				},
				function(tx,error) {
					obj.res = 0;
					obj.arr = error;
					callback && callback(obj);
				}
			)
		});
	}
	//9,查詢一條資料
	function selectOne(db,tabName,ID,callback) {
		var obj = {};
		db.transaction(function(tx) {
			tx.executeSql(
				'select * from ' + tabName + ' where id = ?',
				[ID],
				function(tx,result) {
					obj.res = 1;
					obj.arr = result.rows;
					callback && callback(obj);
				},
				function(tx,error) {
					obj.res = 0;
					obj.arr = error;
					callback && callback(obj);
				}
			)
		});
	}
})();