HTML5 DataBase
阿新 • • 發佈:2018-12-22
一,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); } ) }); } })();