收藏到: Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网 QQ书签 更多 Bookmark and Share

2009年4月18日星期六

Gear Database API 使用

Database API 提供铜鼓JavaScript使用的本地浏览器可以使用的数据。Gears使用SQLite数据库系统。

数据存储使用 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字段,表现向唯一索引。

------------------------------------------------------------------
基本使用:

< 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>



没有评论:

发表评论