1. 程式人生 > >html5資料庫增刪改查

html5資料庫增刪改查

本文資料庫操作使用的javaScript庫是html5sql.js,官網地址: http://html5sql.com/

簡介:

html5sql是一個讓HTML5 Web Database使用更方便的輕量級JavaScript模組,它的基本功能是提供在一個事務中順序執行SQL語句的結構。雖然 Web Database並沒有停止

前進的腳步,這個模組僅僅可以簡化與資料庫的互動過程。這個模組還包含有其他很多小細節以便開發人員能夠更簡單,自然便捷的工作。

操作:

文中使用到的SQlite語句:

var SQL_TABLE = 'DROP TABLE IF EXISTS taskList;CREATE TABLE taskList (id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT, title TEXT);';
var SQL_SELECT = 'SELECT * FROM taskList;';
var SQL_INSERT = 'INSERT INTO taskList(date, title) VALUES(?,?);';
var SQL_SELECT_DETAIL = 'SELECT * FROM taskList WHERE date = ?;';
var SQL_UPDATE = 'UPDATE taskList SET title = ? WHERE date = ?;';
var SQL_DELETE = 'DELETE FROM taskList WHERE date = ?;';

1、在執行增刪改查操作之前必須先開啟資料庫,openDatabase()的作用是開啟一個數據庫連線並返回對連線的引用。

/* 
 * name: 資料庫的名稱
 * displayname: 資料庫描述名稱
 * size: 資料庫大小
 * whenOpen: 開啟資料庫後,獲取到資料庫連線時回撥
 */
 html5sql.openDatabase('taskList', 'taskList', 5 * 1024 * 1024, function(){
   console.log('開啟資料庫成功');  
 });

2、設定資料庫版本,changeVersion()的作用是將舊版本號修改為新版本號,並執行sqlInput語句。

/*
 * oldVersion: 舊版本號
 * newVersion: 新版本號
 * sqlInput: sql語句
 * finalSuccessCallback: 成功回撥
 * failuerCallback: 失敗回撥
 */   		
 if (html5sql.database.version == "") {
    html5sql.changeVersion('', '1.0', SQL_TABLE, function(){
   	console.log('資料庫不存在,設定版本號成功');
    }, function(){
	console.log('資料庫不存在,設定版本號失敗');
    });
 }else {
    console.log('資料庫已存在,版本為:' + html5sql.database.version);
 }

3、增刪改查

html5sql對資料庫的增刪改查操作都由同一個方法執行,process()

1)、插入資料

var date = '2016年11月10日';
var title = '準備資金雙11買買買';
html5sql.process([{
   	            'sql': SQL_INSERT,
   		    'data': [date, title]
   		}], function(){
   		    console.log('插入資料成功');
   		    successCallback();
   		}, function(){
   		    console.log('插入資料失敗');
   		    failureCallback();
   		});
2)、查詢資料
html5sql.process([{
   		   'sql': SQL_SELECT,
   		   'data':[]
   		}], function(tx, results){
 		   console.log('查詢到' + results.rows.length + '條資料');
		   //獲取查詢結果的第一條記錄,得到的是一個物件
                   var item = results.rows.item(0);
		   //獲取物件的各個屬性
                   var date = item.date;
		   var title = item.title;
 		   successCallback(results);
   		}, function(){
   		   console.log('查詢資料失敗');
   		});
3)、修改資料
var title = '讀一本有益的書';
html5sql.process([{
   		   'sql': SQL_UPDATE,
   		   'data': [title]
   		}], function(){
   		   console.log('修改資料成功');
   		}, function(){
   		   console.log('修改資料失敗');
   		});
4)、刪除資料
var date = '2016年11月9日';
html5sql.process([{
   		   'sql': SQL_DELETE, 
   		   'data':[date]
   		}], function(){
   		   console.log('刪除資料成功');
   		}, function(){
   		   console.log('刪除資料失敗');
   		});

process(sqlInput, finalSuccessCallback, failureCallback)中的第一個引數sqlInput支援三種輸入模式,第一種為單條sql語句, 第二種為一組sql語句,第三種為一組sql語句物件。上面的例子就是第三種模式

//單條sql語句,字串的形式
var sql = 'SELECT * FROM taskList';
html5sql.process(sql, function(){
   console.log('查詢資料成功');
}, function(){
console.log('查詢資料失敗'); });

//或者sql這樣寫:
sql ="CREATE taskList (id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT, title TEXT);" +
"INSERT INTO taskList (date, title) VALUES ('2016年11月8日', '花園除草');" +
"INSERT INTO taskList (date, title) VALUES ('2016年11月9日', '書店買書');" +
"INSERT INTO taskList (date, title) VALUES ('2016年11月10日', '超市買菜');";
//一組sql語句,只是把上面的字串拆成幾個字串,裝到數組裡面
sql =["CREATE taskList (id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT, title TEXT);",
"INSERT INTO taskList (date, title) VALUES ('2016年11月8日', '花園除草');",
"INSERT INTO taskList (date, title) VALUES ('2016年11月9日', '書店買書');",
"INSERT INTO taskList (date, title) VALUES ('2016年11月10日', '超市買菜');"];
html5sql.process(sql, function(){
   console.log('查詢資料成功');
}, function(){
   console.log('查詢資料失敗');
});