2013-01-08 19 views
0

這是一個非常奇怪的問題。我修改了sencha touch 2的sql代理。實際上,我只是更改了一些配置和名稱,非代碼被修改了,除了一些console.log。當我使用chrome進行調試時,createTable的代碼是execute,並且創建了數據庫,但帶有create table的executeSql不起作用。我已經添加成功和失敗回調,但他們沒有執行。無法使用Sencha Touch 2 SQL代理在Web SQL中創建表

我的意思是奇怪的,因爲原始的JavaScript代碼工作正常。我將在稍後粘貼代碼,但我幾乎無法想象它爲什麼會發生。

對不起,我英文很差。

原始代碼可以工作:

var db = openDatabase("TDD", "1.0", "TDD Database", 5 * 1024 * 1024); 
db.transaction(function(tx){ 
     tx.executeSql("CREATE TABLE IF NOT EXISTS Activities " + 
        "(id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER, " + 
        "title TEXT, location TEXT)"); 
}); 

煎茶觸摸SQL代理(只有需要的代碼):

/** 
* PhoneGap proxy. 
*/ 
Ext.define('TDD.proxy.PhoneGap', { 
    alias: 'proxy.phonegap', 
    extend: 'Ext.data.proxy.Client', 

    conf ig: { 
     /** 
     * @cfg {Object} reader 
     * @hide 
     */ 
     reader: null, 
     /** 
     * @cfg {Object} writer 
     * @hide 
     */ 
     writer: null, 

     table: null, 

     database: 'TDD', 

     columns: '', 

     uniqueIdStrategy: false, 

     tableExists: false, 

     defaultDateFormat: 'Y-m-d H:i:s.u' 
    }, 

    create: function (operation, callback, scope) { 
     var me = this, 
      db = me.getDatabaseObject(), 
      records = operation.getRecords(), 
      tableExists = me.getTableExists(); 

     operation.setStarted(); 

     db.transaction(function(transaction) { 
      if (!tableExists) { 
       me.createTable(transaction); 
      } 

      me.insertRecords(records, transaction, function(resultSet, errors) { 
       if (operation.process(operation.getAction(), resultSet) === false) { 
        me.fireEvent('exception', this, operation); 
       } 

       if (typeof callback == 'function') { 
        callback.call(scope || this, operation); 
       } 
      }, this); 
     }); 
    }, 

    createTable: function (transaction) { 
     var sql = 'CREATE TABLE IF NOT EXISTS ' + this.getTable() + ' (' + this.getSchemaString() + ')'; 
     console.log(sql); 
     transaction.executeSql(sql, [], 
      function(tx, results) { 
       console.log("Success."); 
       console.log(results); 
      }, 
      function(tx, errors) { 
       console.log("Fail."); 
       console.log(errors); 
      } 
     ); 
     // Don't work either. 
     transaction.executeSql("Create Table item (id integer, TT text)"); 

     this.setTableExists(true); 
    }, 

    getDatabaseObject: function() { 
     return openDatabase(this.getDatabase(), '1.0', 'TDD Database', 5 * 1024 * 1024); 
    } 
}); 

回答

0

您發佈的代碼顯示了這一點:

CONF IG:{

它應該是:

配置:{

不知道這是否是您的問題,但會先看看那裏。

相關問題