<!DOCTYPE HTML> <html> <head> <script type="text/javascript"> var msg; // 可以有多個數據庫,但無法遍歷, // 包括空字符串在內的所有字符串都可以作為有效地數據庫名稱,數據庫名稱區分大小寫,且可以比較。 // 一個數據庫只能有一個版本號 // 一個顯示名字(displayName), // 數據庫將要保存數據的大小(estimatedSize,以字節為單位 ) // 一個可選的回調函數(createionCallback,如果數據庫沒有被創建,這個函數將會被調用 ) var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024); // 方法 transaction() 和 readTransaction() 有一個到三個參數, // 后兩個參數為可選的,分別表示錯誤回調函數和成功回調函數。 // transaction() 方法為 read/write 模式,readTransaction() 方法為只讀模式; db.transaction(function (tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS ques (id unique, log)'); tx.executeSql('INSERT INTO ques (id, log) VALUES (4, "foobar")'); tx.executeSql('INSERT INTO ques (id, log) VALUES (3, "logmsg")'); msg = '<p>Log message created and row inserted.</p>'; document.querySelector('#status').innerHTML = msg; },function(){alert('e');},function(){alert('s');}); // executeSql這個函數具有四個參數: // 表示查詢的字符串(sqlStatement); // 插入到查詢語句中問號所在處的字符串數據(arguments); // 一個可選的成功時執行函數(callback); // 一個可選的失敗時執行函數(errorCallback)。 // 查詢結果是一個對象 // 插入數據庫,insertId 代表這個行號;如果插入多行數據,insertId 代表插入數據的最后一行行號。 // 改變的行數用 rowsAffected 表示,沒有改變 rowsAffected 為 0,“SELECT”語句,rowsAffected 就為 0. // rows 為一個 SQLResultSetRowList 對象,代表數據庫按順序返回的行。如果沒有返回任何行,則這個對象為空。 db.transaction(function (tx) { tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) { var len = results.rows.length, i; msg = "<p>Found rows: " + len + "</p>"; document.querySelector('#status').innerHTML += msg; for (i = 0; i < len; i++){ msg = "<p><b>" + results.rows.item(i).log + "</b></p>"; document.querySelector('#status').innerHTML += msg; } }, null); }); </script> </head> <body> <div id="status" name="status">Status Message</div> </body> </html>