ext-gears-db.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:2k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ Ext.data.GearsDB = Ext.extend(Ext.data.SqlDB, {
  2. // abstract methods
  3.     open : function(db, cb, scope){
  4.         this.conn = google.gears.factory.create('beta.database', '1.0');
  5.         this.conn.open(db);
  6.         this.openState = true;
  7. Ext.callback(cb, scope, [this]);
  8. this.fireEvent('open', this);
  9.     },
  10. close : function(){
  11.         this.conn.close();
  12.         this.fireEvent('close', this);
  13.     },
  14.     exec : function(sql, cb, scope){
  15.         this.conn.execute(sql).close();
  16.         Ext.callback(cb, scope, [true]);
  17.     },
  18. execBy : function(sql, args, cb, scope){
  19.     this.conn.execute(sql, args).close();
  20.         Ext.callback(cb, scope, [true]);
  21.     },
  22. query : function(sql, cb, scope){
  23.         var rs = this.conn.execute(sql);
  24.         var r = this.readResults(rs);
  25.         Ext.callback(cb, scope, [r]);
  26.         return r;
  27.     },
  28. queryBy : function(sql, args, cb, scope){
  29.         var rs = this.conn.execute(sql, args);
  30.         var r = this.readResults(rs);
  31.         Ext.callback(cb, scope, [r]);
  32.         return r;
  33.     },
  34.     readResults : function(rs){
  35.         var r = [];
  36.         if(rs){
  37.             var c = rs.fieldCount();
  38.             // precache field names
  39.             var fs = [];
  40.             for(var i = 0; i < c; i++){
  41.                 fs[i] = rs.fieldName(i);
  42.             }
  43.             // read the data
  44.             while(rs.isValidRow()){
  45.                 var o = {};
  46.                 for(var i = 0; i < c; i++){
  47.                     o[fs[i]] = rs.field(i);
  48.                 }
  49.                 r[r.length] = o;
  50.                 rs.next();
  51.             }
  52.             rs.close();
  53.         }
  54.         return r;
  55.     },
  56.     // protected/inherited method
  57.     isOpen : function(){
  58. return this.openState;
  59. },
  60. getTable : function(name, keyName){
  61. return new Ext.data.SqlDB.Table(this, name, keyName);
  62. }
  63. });