1. localStorage 2. Web Sql
其中localStorage非常简单,就是一个简单的存储,看看API即可掌握;重点学会使用Web Sql
简单看看API:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>jQuery Mobile Web 应用程序</title> <link href="../jquery.mobile-1.3.2.css" rel="stylesheet" type="text/css"/> <script src="../jquery.js" type="text/javascript"></script> <script src="../jquery.mobile-1.3.2.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ //document.addEventListener("deviceready", myDeviceReadyListener, false); myDeviceReadyListener() }); function myDeviceReadyListener(){ var ls = window.localStorage; var name=''; if(ls.getItem("name")){ console.log('1'); name=ls.getItem("name"); }else{ console.log('2'); //第一步 获取数据 var services_name='李四'; name=services_name; ls.setItem('name',name); } ls.setItem("name","phonegap100"); ls.setItem("password","phonegap100"); ls.setItem("username","phonegap100"); //alert(name); //ls.removeItem("name");//清楚一条数据 //ls.clear(); /* * //写入localstorage ls.setItem('age','50'); ls.setItem('name','zhangsan'); ls.setItem('sex','男'); console.log(ls.getItem("name")); console.log(ls.getItem("age")); */ //获取localstorage /* ls.setItem("name","phonegap100"); ls.setItem("password","phonegap100"); ls.setItem("username","phonegap100"); console.log(ls.getItem("name")); console.log(ls.key(0)); //ls.removeItem("name"); console.log(ls.getItem("name")); console.log(ls.getItem("password")); console.log(ls.getItem("username")); ls.clear(); console.log(ls.getItem("name")); console.log(ls.getItem("password")); console.log(ls.getItem("username")); */ } </script> </head> <body> <div data-role="page" id="indexPage"> <div data-role="header"> <h1>phonegap100.com</h1> </div> <div data-role="content"> </div> <div data-role="footer"> <h4>phonegap中文网</h4> </div> </div> </body> </html>调试图如下:
var dbShell = window.openDatabase(name, version, display_name, size);
function db(name,ver,dis,size){ ....... var _db = window.openDatabase(name,ver,dis,size); _db.transaction(); }
<span style="font-size:18px;">var newdb = { _db:'', db:function(){ if(!newdb._db){ newdb._db = window.openDatabase("database","1.0","mydatabase",10000); return new db(newdb._db); } } }</span>
db.transaction(populateDB, errorCB, successCB);
function populateDB(tx) { tx.executeSql('DROP TABLE DEMO IF EXISTS'); tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); } function errorCB(err) { alert("Error processing SQL: "+err); } function successCB() { alert("success!"); } var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); db.transaction(populateDB, errorCB, successCB);
<span style="font-size:18px;">tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);</span>第一个参数为要执行的数据库语句。与普通操纵数据库语句没太大区别。
function querySuccess(tx, results) { // 因为没有插入记录,所以返回值为空 console.log("Insert ID = " + results.insertId); // 因为这是一条查询语句所以返回值为0 console.log("Rows Affected = " + results.rowAffected); // 返回查询到的记录行数量 console.log("Insert ID = " + results.rows.length); }
db.transaction(SQLTransaction,err,sucss); SQLResultSet = SQLTransaction.executesql("select * from",[],succ,err); SQLResultSetList = SQLResultSet.rows; item = SQLResultSetList.item(i);
window.openDatabase(database_name, database_version, database_displayname, database_size); var dbOne = window.openDatabase("test1", "1.0", "Test DB", 1000000); database_name:数据库名字, database_version:数据库版本 database_displayname:显示名字 database_size:数据库大小
dbOne.transaction(createATable, errorCreateTable, successCreateTable);
createATable(trans){ }
createATable(trans){ trans.executeSql('CREATE TABLE IF NOT EXISTS MyTab (id unique, data)'); tx.executeSql('INSERT INTO MyTab (id, data) VALUES (1, "First row")'); tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")'); }
function errorCreateTable(err) { alert("err code:"+err.code+"err message:"+err.message'); } code和message为SQLError对象的两个属性 SQLResultSet对象该对象是由事物对象的executeSql方法传递给回调函数,在回调函数中在对结构集对象操作,例如
tx.executeSql('SELECT * FROM MyTab', [], querySuccess, errorCB);
function querySuccess(trans, results) { alert("Returned rows = " + results.rows.length); if (!resultSet.rowsAffected) { alert('No rows affected!'); return false; }该函数接受两个参数:事物对象和结果集对象SQLResultSet,SQLResultSet包含三个属性
function querySuccess(trans, results) { var len = results.rows.length; console.log("MyTab table: " + len + " rows found."); for (var i=0; i<len; i++){ console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data = " + results.rows.item(i).data); } }
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>html5-dataBase</title> </head> <body> <script type="text/javascript"> //1.如果数据库存在 则打开 不存在的则创建 然后在打开 var db = window.openDatabase("phonegap100", "1.0","phonegap中文网",1024*1024*20); if(db){ console.log('数据库连接成功'); }else{ console.log('数据库连接失败'); } //2.执行transaction db.transaction(function(tx){ //tx.executeSql tx.executeSql("CREATE TABLE test (id int UNIQUE, name TEXT, age int)"); }) //插入数据 db.transaction(function(tx){ //tx.executeSql //四个参数 第一个 sql语句 第二个 sql参数 第三个 成功的回调函数 第四个 失败的回调函数 tx.executeSql("insert into test(id,name,age) values(1,'张三',20)"); tx.executeSql("insert into test(id,name,age) values(2,'李四',25)"); tx.executeSql("insert into test(id,name,age) values(?,?,?)",[3,'赵四',15],null,null); /* tx.executeSql("insert into test(name,age) values('赵四666',25)",[],function(tx,rel){ if(rel.rowsAffected>0){ //新增成功 console.log('成功的增加一条数据'); console.log('这条数据的id'+rel.insertId); } },function(){ alert('失败'); }); */ }) //更新数据 db.transaction(function(tx){ //tx.executeSql //四个参数 第一个 sql语句 第二个 sql参数 第三个 成功的回调函数 第四个 失败的回调函数 //tx.executeSql("insert into test(id,name,age) values(1,'张三',20)"); //tx.executeSql("insert into test(id,name,age) values(2,'李四',25)"); //tx.executeSql("update test set name=?,age=? where id=1",['张三1',50],null,null); //tx.executeSql("update test set name='张三22',age=60 where id=1"); }) //删除数据 db.transaction(function(tx){ //tx.executeSql //四个参数 第一个 sql语句 第二个 sql参数 第三个 成功的回调函数 第四个 失败的回调函数 //tx.executeSql("insert into test(id,name,age) values(1,'张三',20)"); //tx.executeSql("insert into test(id,name,age) values(2,'李四',25)"); //tx.executeSql("update test set name=?,age=? where id=1",['张三1',50],null,null); //tx.executeSql("delete from test where id=1"); }) //查询数据 db.transaction(function(tx){ //tx.executeSql //四个参数 第一个 sql语句 第二个 sql参数 第三个 成功的回调函数 第四个 失败的回调函数 //tx.executeSql("insert into test(id,name,age) values(1,'张三',20)"); //tx.executeSql("insert into test(id,name,age) values(2,'李四',25)"); //tx.executeSql("update test set name=?,age=? where id=1",['张三1',50],null,null); tx.executeSql("select * from test",[],function(tx,rel){ for(var i=0;i<rel.rows.length;i++){ document.write('姓名:'+rel.rows.item(i)['name']+'年龄:'+rel.rows.item(i)['age']+'<br>'); } },function(){ alert('失败'); }); }) </script> </body> </html>