<html> <script> // Open a Web SQL database. var g_db = null; if (typeof window.openDatabase == "undefined") { document.write("Error: Web SQL databases are not supported."); } try { g_db = openDatabase("test", "1.0", "test database", 1024 * 1024); } catch(err) { document.write("Error: cannot open database."); } // Creates a table named "table1" with one text column named "data". function createTable() { if (!g_db) return; g_db.transaction( function(tx) { tx.executeSql("CREATE TABLE table1 (data TEXT)"); }, function(error) { sendValueToTest(error); }, function() { sendValueToTest("done"); }); } // Inserts a record into the database. function insertRecord(text) { g_db.transaction( function(tx) { tx.executeSql("INSERT INTO table1 VALUES (?)", [text]); }, function(error) { sendValueToTest(error); }, function() { sendValueToTest("done"); }); } // Updates a record at the given index with the given text. The indices are // 0-based and are ordered from oldest record, to newest record. function updateRecord(index, text) { var didUpdate = false; findId(index, function(rowId) { g_db.transaction( function(tx) { tx.executeSql( "UPDATE table1 SET data=? WHERE ROWID=?", [text, rowId], function(tx, result) { if (result.rowsAffected == 1) didUpdate = true; else if (result.rowsAffected == 0) sendValueToTest("could not update index: " + index); else sendValueToTest("multiple rows with index: " + index); }); }, function(error) { sendValueToTest("update error: " + error); }, function() { if (didUpdate) sendValueToTest("done"); }); }); } // Deletes a record at the given index. function deleteRecord(index) { findId(index, function(rowId) { g_db.transaction( function(tx) { tx.executeSql("DELETE FROM table1 WHERE ROWID=?", [rowId]); }, function(error) { sendValueToTest("delete error: " + error); }, function() { sendValueToTest("done"); }); }); } // Gets all the records in the database, ordered by their age. function getRecords() { g_db.readTransaction(function(tx) { tx.executeSql( "SELECT data FROM table1 ORDER BY ROWID", [], function(tx, result) { items = ""; for (var i = 0; i < result.rows.length; i++) { if (items != "") items += ", "; items += result.rows.item(i).data; } sendValueToTest(items); }, function(tx, error) { sendValueToTest("getRecords error: " + error); }); }); } // Helper function that finds the ID for a record based on a given index. function findId(index, callback) { g_db.readTransaction(function(tx) { // |ROWID| is a special sqlite column. It is unique and is incremented // automatically when a new record is created. // |LIMIT| is a nonstandard clause supported by sqlite that lets us pick // rows from the database by index. E.g., LIMIT 2,10 will give us 10 records // starting at offset 2. tx.executeSql( "SELECT ROWID AS id FROM table1 ORDER BY ROWID LIMIT ?,1", [index], function(tx, result) { if (result.rows.length >= 1) callback(result.rows.item(0).id); else sendValueToTest("could not find row with index: " + index); }, function(tx, error) { sendValueToTest("findId error: " + error); }); }); } function sendValueToTest(value) { //alert(value); window.domAutomationController.setAutomationId(0); window.domAutomationController.send(value); } </script> <body> This page is used for testing Web SQL databases. </body> </html>