WEB SQL Database 介紹:
web sql database 是一個(gè)獨(dú)立于w3c規(guī)范之外的標(biāo)準(zhǔn),但是對于前端工程師來說伺通,這是我們做單機(jī)app的利器(因?yàn)榭梢蕴幚肀容^復(fù)雜的數(shù)據(jù)關(guān)系),它為開發(fā)者提供了一個(gè)簡單而強(qiáng)大的javascript數(shù)據(jù)庫操作API接口等孵,是的本地應(yīng)用程序可以使用本地?cái)?shù)據(jù)庫(SQLite)持久保存數(shù)據(jù)辈赋。開發(fā)者可以使用標(biāo)準(zhǔn)SQL語句來創(chuàng)建數(shù)據(jù)表袋哼,插入炫乓、更新刚夺、查找和刪除數(shù)據(jù)行献丑,甚至支持事物。
WEB sql database兼容性
WEB sql database API
db.openDatabase() //這個(gè)方法使用現(xiàn)有數(shù)據(jù)庫或新建數(shù)據(jù)庫來創(chuàng)建數(shù)據(jù)庫對象
db.transaction() //這個(gè)方法允許我們根據(jù)情況控制事務(wù)提交或回滾
db.executeSql() //這個(gè)方法用于執(zhí)行SQL 查詢
代碼實(shí)例
建立數(shù)據(jù)庫連接
var = var db = openDatabase('testDB', '1.0', 'Test DB', 2 * 1024 * 1024);
/*openDatabase接收五個(gè)參數(shù):
數(shù)據(jù)庫名字
數(shù)據(jù)庫版本號(hào)
顯示名字
數(shù)據(jù)庫保存數(shù)據(jù)的大醒艟唷(以字節(jié)為單位 )
回調(diào)函數(shù)(非必須)*/
事物操作
transaction方法用以處理事務(wù),當(dāng)一條語句執(zhí)行失敗的時(shí)候结借,整個(gè)事務(wù)回滾。方法有三個(gè)參數(shù)
- 包含事務(wù)內(nèi)容的一個(gè)方法
- 執(zhí)行成功回調(diào)函數(shù)(可選)
- 執(zhí)行失敗回調(diào)函數(shù)(可選)
db.transaction(function (tx ) {
//數(shù)據(jù)庫操作都必須放在transation()方法的回調(diào)函數(shù)里面
//新建表格
tx.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)');
//插入測試數(shù)據(jù)
tx.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")');
tx.executeSql('INSERT INTO testTable (id, name) VALUES (1, "Casper")');
tx.executeSql('INSERT INTO testTable (id, name) VALUES (2, "Frank")');
});
數(shù)據(jù)操作
db.transaction(function (tx ) {
//數(shù)據(jù)庫操作都必須放在transation()方法的回調(diào)函數(shù)里面
tx.executeSql("SELECT * FROM testTable", function (transaction, result) {
if (result.rows.length > 0) {
for(var i=0;i<result.rows.length;i++){
console.log(result.rows[i].name);
}
} else if (result.rows.length <= 0) {
console.log("there is no data");
}
}, null);
});
稍后奉上實(shí)例……