虽然Web SQL API 已经被废除,但我们了解一下也是没错的。
核心的三大方法:
● openDatabase():这个方法使用现有数据库和新创建的数据库来创建数据库对象
● transaction(): 执行事务处理。防止在对数据库进行访问及执行有关操作时受到外界干扰。
● executeSql():创建数据库表,也可以执行、增删查改等数据操作。
打开数据库
openDatabase()方法:返回一个数据库对象,接受5个参数:
1:数据库名字
2:数据库版本
3:数据库说明
4:数据库保存数据的大小
5:回调函数:在数据库创建之后会执行(非必须)
var db = openDatabase('mydb','1.0','text db',2*1024*1024);
事务
通过事务对数据库进行操作
transaction()方法:通过返回的数据库对象调用,接受3个参数:
1:callbackFun: 执行访问数据库的SQL语句操作的一个函数
2: errorCallbackFun:发生错误时调用的回调函数(可选)
3: successCallbackFun: 执行成功时的回调函数(可选)``
db.transaction(callbackFun,errorCallbackFun,successCalbackFun);
transaction()中需要传入一个事件参数tx;
db.transaction(function(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS testTable(id,name)');
tx.executeSql('INSERT INTO testTable VALUES(?,?)', ['0',"Byron"]);
tx.executeSql('INSERT INTO testTable VALUES(?,?)', ['1',"Casper"]);
tx.executeSql('INSERT INTO testTable VALUES(?,?)', ['2',"Frank"]);
});
数剧操作
executeSql()方法:执行SQL语句,事件参数tx有一个executeSql()方法,调用它可以执行SQL语句。
接受4个参数: tx.executeSql(sqlstring,[],dataHandler,errorHandler);
1:sqlstring: 查询的字符串,即要执行的SQL语句。如果有参数,用?代替
2:[]:执行SQL语句时需要传入的参数,即sqlstring语句中使用?时所在处的字符串数据
3: dataHandler: 执行成功时的回调函数。两个参数,1:tx对象 2:返回的查询到的结果数据集对象
4: erroeHandler: 执行失败时的回调函数。两个参数与上面一样
数据库的查询
function getObjList(){
db.transaction(function(tx){
tx.executeSql('SELECT * FROM testTable',[],function(tx,results){
var len = results.rows.length;
console.log(len);
for(var i = 0;i < len;i++)
{
console.log('id:'+results.rows.item(i).id);
console.log('name:'+results.rows.item(i).name);
}
});
});
}
数据库的删除
function delObj(objname){
db.transaction(function(tx){
tx.executeSql('DELETE FROM testTable WHERE name=?',[objname],function(){
getObjList();
},function(tx,results){
alert('删除过程中出现错误,错误原因'+results.massage);
});
});
}