HTML5教程之html 5 本機資料庫(Web Sql Database)

來源:互聯網
上載者:User

標籤:

HTML5的Web SQL Databases(html5 本機資料庫)的確很誘惑人,當你發現可以用與mysql查詢一樣的查詢語句來操作本機資料庫時,你會發現這東西挺有趣的。今天,我們一起來瞭解HTML 5的Web SQL Database API:openDatabase、transaction、executeSql。 Web SQL資料庫API實際上不是HTML5規範的組成部分,而是單獨的規範。它通過一套API來操縱用戶端的資料庫。Safari、Chrome、Firefox、Opera等主流瀏覽器都已經支援Web SQL Database。HTML5的Web SQL Databases的確很誘惑人,當你發現可以用與mysql查詢一樣的查詢語句來操作本機資料庫時,你會發現這東西挺有趣的。今天,我們一起來瞭解HTML 5的Web SQL Database API。

下面將一一將介紹怎樣建立開啟資料庫,建立表,添加資料,更新資料,刪除資料,刪除表 。

先介紹三個核心方法

1、openDatabase:這個方法使用現有資料庫或建立新資料庫建立資料庫物件。

2、transaction:這個方法允許我們根據情況控制事務提交或復原。

3、executeSql:這個方法用於執行真實的SQL查詢。

第一步:開啟串連並建立資料庫
 代碼如下:
var dataBase = openDatabase("student", "1.0", "學生表", 1024 * 1024, function () { });
if (!dataBase) {
alert("資料庫建立失敗!");
} else {
alert("資料庫建立成功!");
}

解釋一下openDatabase方法開啟一個已經存在的資料庫,如果資料庫不存在,它還可以建立資料庫。幾個參數意義分別是:
1,資料庫名稱。
2,版本號碼 目前為1.0,不管他,寫死就OK。
3,對資料庫的描述。
4,設定資料的大小。
5,回呼函數(可省略)。
初次調用時建立資料庫,以後就是建立串連了。
建立的資料庫就存在本地,路徑如下:
C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Default\databases\http_localhost_4987 。
建立的是一個sqllite資料庫,可以用SQLiteSpy開啟檔案,可以看到裡面的資料。SQLiteSpy是一個綠色軟體,可以百度一下或SQLiteSpy官方下載:SQLiteSpy。

 
第二步:建立資料表

 代碼如下:
this.createTable=function() {
dataBase.transaction( function(tx) {
tx.executeSql(
"create table if not exists stu (id REAL UNIQUE, name TEXT)",
[],
function(tx,result){ alert(‘建立stu表成功‘); },
function(tx, error){ alert(‘建立stu表失敗:‘ + error.message);
});
});
}

解釋一下,
executeSql函數有四個參數,其意義分別是:
1)表示查詢的字串,使用的SQL語言是SQLite 3.6.19。
2)插入到查詢中問號所在處的字串資料。
3)成功時執行的回呼函數。返回兩個參數:tx和執行的結果。
4)一個失敗時執行的回呼函數。返回兩個參數:tx和失敗的錯誤資訊。

 

第三步:執行增刪改查

1)添加資料:

 代碼如下:
this.insert = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"insert into stu (id, name) values(?, ?)",
[id, ‘徐明祥‘],
function () { alert(‘添加資料成功‘); },
function (tx, error) { alert(‘添加資料失敗: ‘ + error.message);
} );
});

 
2)查詢資料

 代碼如下:
this.query = function () {
dataBase.transaction(function (tx) {
tx.executeSql(
"select * from stu", [],
function (tx, result) { //執行成功的回呼函數
//在這裡對result 做你想要做的事情吧...........
},
function (tx, error) {
alert(‘查詢失敗: ‘ + error.message);
} );
});
}

解釋一下
上面代碼中執行成功的回呼函數有一參數result。

result:查詢出來的資料集。其資料類型為 SQLResultSet ,就如同C#中的DataTable。
SQLResultSet 的定義為:

 代碼如下:
interface SQLResultSet {
readonly attribute long insertId;
readonly attribute long rowsAffected;
readonly attribute SQLResultSetRowList rows;
};
其中最重要的屬性—SQLResultSetRowList 類型的 rows 是資料集的“行” 。
rows 有兩個屬性:length、item 。
故,擷取查詢結果的某一行某一列的值 :result.rows[i].item[fieldname]  。

3)更新資料


 代碼如下:
this.update = function (id, name) {
dataBase.transaction(function (tx) {
tx.executeSql(
"update stu set name = ? where id= ?",
[name, id],
function (tx, result) {
},
function (tx, error) {
alert(‘更新失敗: ‘ + error.message);
});
});
}

4)刪除資料


 代碼如下:
this.del = function (id) {
dataBase.transaction(function (tx) {
tx.executeSql(
"delete from stu where id= ?",
[id],
function (tx, result) {
},
function (tx, error) {
alert(‘刪除失敗: ‘ + error.message);
});
});
}


5)刪除資料表

 代碼如下:
this.dropTable = function () {
dataBase.transaction(function (tx) {
tx.executeSql(‘drop table stu‘);
});
}

HTML5教程之html 5 本機資料庫(Web Sql Database)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.