rows(返回记录集) SQL记录集行列 只读属性
创建表的代码如下所示:
MyDb.transaction(function(evt){
evt.executeSql('CREATE TABLE IF NOT EXISTS Records (id unique, Record)');
});
本语句将会在XYT_Database数据库中创建一个Records表。向表中插入记录的代码如下所示:
evt.executeSql('Insert Into Records (id, Record) values (1, "abc")');
evt.executeSql('Insert Into Records (id, Record) values (2, "hello")');
evt.executeSql('Insert Into Records (id, Record) values (?, ?)'), [V_id, V_Record];
这里的V_id和V_Record是外部变量。executeSql在数组参数中将每个项目映射到?。
从表中读取记录(回调法)的代码如下所示:
MyDb.transaction(function(evt){
evt.executeSql('Select * From Records', [], function(evt,results){
var len = results.rows.length,i;
msg = "
查询结果记录数:" + len + "
";document.querySelector('#status').innerHTML += msg;
for(i = 0; i < len; i++){
alert(results.rows.item(i).Record);
}
}, null);
});
从表中删除记录的代码如下所示:
evt.executeSql('Delete FROM Records Where id = 1');
从表中更新记录的代码如下所示:
evt.executeSql('Update Records Set Record=abcdefg Where id = 2');
此外,Web SQL还提供了同步与异步执行、为网络广告服务准备的用户追踪设置、进程级SQL执行等非常强大的功能,但是这里不再一一予以介绍。
3. Web SQL数据库的完整例子
我们准备了一个完整的例子,供读者学习参考。在该示例中,包含了建立数据库、设置数据库大小、数据写入、查询等相关操作,
具体代码如下:
var MyDb = openDatabase("XYT_Database", "1.0", "这是一个试验用的数据库", 10*1024*1024);
var msg;
MyDb.transaction(function(evt){
evt.executeSql('Create Tanle IF NOT EXISTS Records (id unique, Record)');
evt.executeSql('Insert Into Records (id, Record) values (1, "abc")');
evt.executeSql('Insert Into Records (id, Record) values (2, "hello")');
msg = '
创建了表【Records】,同时插入了两条记录。
';document.querySelector('#status').innerHTML = msg;
});
MyDb.transaction(function(evt){
evt.executeSql('Select * From Records', [], function(evt,results){
var len = results.rows.length,i;
msg = "
查询结果记录数:" + len + "
";document.querySelector('#status').innerHTML += msg;
for(i = 0; i < len; i++){
alert("查到的记录为:"+results.rows.item(i).Record);
}
}, null);
});
运行效果图如下:
4. Web SQL的错误提示
Web SQL虽然小而简单,但是仍有较好的状态判断和错误提示,如下:
代 码 错误说明
0 UNKNOWN_ERR(未知错)
1 DATABASE_ERR(数据库自身错)
2 VERSION_ERR(版本错)
3 TOO_LARGE_ERR(数据库过大或溢出)
4 QUOTA_ERR(空间配额错)
5 SYNTAX_ERR(语法错)
6 CONSTRAINT_ERR(约束性错,主要集中在INSERT、UPDATE和REPLACE这些命令上)
7 TIMEOUT_ERR(执行超时)
5. Web SQL存在的安全问题
由于此标准已废弃,本书只简要介绍Web SQL的安全问题,不准备进行详细讨论。Web SQL一直存在的几大安全性问题:DNS欺骗攻击、跨目录攻击、执行风险(第三方源问题)和SQL注入。