数据存储使用 same-origin security policy,意思是在这个domian之外的web应用无法访问到这个数据。Gears包括SQLite full-text-search extension fts2.
安全考虑:
SQL语句通过execute()执行,并且应该用绑定参数的方式避免 SQL注入攻击(SQL injection attacks)。
许可:
这些API要求用户许可。如果你要客户化缺省的dialog,你要显示调用google.gears.factory.getPermission()
Classes:
Database
ResultSet
修改本地SQLite库
SQLite通过Attache和Detach命令使用本地SQLite库。出于安全考虑,Gears禁止使用这些命令。将来在满足same-origin security policy情况下可以使用这些功能。
Pragma设置
SQLite的Pragma命令允许在不同的平台下进行一些设置。出于安全考虑,目前禁止使用。
Gears使用的Pragma设置:
Pragma encoding=“UTF-8”
Pragma auto_vacuum=1
Pragma page_size=4096
Pragma cache_size=2048
Pragma synchronous=NORMAL
Full-Text Search
Gears 包含 SQLite extension called fts2, for "Full-Text Search". fts2允许创建表,搜索Text数据。 fts2表创建:
db.execute('CREATE VIRTUAL TABLE recipe USING fts2(dish, ingredients)');
创建表recipe,字段dish、ingredients。所有fts2字段都是TEXT类型。表中的数据通过标准的SQL命令操作,如:INSERT/UPDATE/DELETE,和其他的表一样。fts2表有一个隐含的rowid字段,表现向唯一索引。
------------------------------------------------------------------
基本使用:
var db = google.gears.factory.create('beta.database');
db.open('database-test'); // 打开数据库
db.execute('create table if not exists Test' + ' (Phrase text, Timestamp int)'); // 创建表
db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]); // 插入数据
var rs = db.execute('select * from Test order by Timestamp desc'); // 查询
while (rs.isValidRow()) { // 是否到记录结束
alert(rs.field(0) + '@' + rs.field(1)); // 获取数据
rs.next(); // 移动到下一条记录
}
rs.close(); // 关闭数据库
var db = google.gears.factory.create('beta.database');
db.open('database-test'); // 创建数据库
db.execute('create table if not exists Test' +' (Phrase text, Timestamp int)'); // 创建表
db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]); // 插入数据
var rs = db.execute('select * from Test order by Timestamp desc'); // 查询
while (rs.isValidRow()) { // 是否到记录结束
alert(rs.field(0) + '@' + rs.field(1)); // 获取字段值
rs.next(); // 移动到下一条记录
}
rs.close(); // 关闭数据库
< type="text/javascript" src="gears_init.js">< /script>
< type="text/javascript">
var db = google.gears.factory.create('beta.database');
db.open('database-test'); // 创建数据库
db.execute('create table if not exists Test' +' (Phrase text, Timestamp int)'); // 创建表
db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]); // 插入数据
var rs = db.execute('select * from Test order by Timestamp desc'); // 查询
while (rs.isValidRow()) { // 是否到记录结束
alert(rs.field(0) + '@' + rs.field(1)); // 获取字段值
rs.next(); // 移动到下一条记录
}
rs.close(); // 关闭数据库
< /script>
var db = google.gears.factory.create('beta.database');
db.open('database-test'); // 创建数据库
db.execute('create table if not exists Test' +' (Phrase text, Timestamp int)'); // 创建表
db.execute('insert into Test values (?, ?)', ['Monkey!', new Date().getTime()]); // 插入数据
var rs = db.execute('select * from Test order by Timestamp desc'); // 查询
while (rs.isValidRow()) { // 是否到记录结束
alert(rs.field(0) + '@' + rs.field(1)); // 获取字段值
rs.next(); // 移动到下一条记录
}
rs.close(); // 关闭数据库
没有评论:
发表评论