1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*!
* Ext JS Library 3.0.3
* Copyright(c) 2006-2009 Ext JS, LLC
* licensing@extjs.com
* http://www.extjs.com/license
*/
Ext.data.AirDB = Ext.extend(Ext.data.SqlDB, {
open : function(db, cb, scope){
this.conn = new air.SQLConnection();
var file = air.File.applicationResourceDirectory.resolve(db);
this.conn.addEventListener(air.SQLEvent.OPEN, this.onOpen.createDelegate(this, [cb, scope]));
this.conn.addEventListener(air.SQLEvent.CLOSE, this.onClose.createDelegate(this));
this.conn.open(file, true);
},
close : function(){
this.conn.close();
},
onOpen : function(cb, scope){
this.openState = true;
Ext.callback(cb, scope, [this]);
this.fireEvent('open', this);
},
onClose : function(){
this.fireEvent('close', this);
},
onError : function(e, stmt, type, cb, scope){
Ext.callback(cb, scope, [false, e, stmt]);
},
onResult : function(e, stmt, type, cb, scope){
if(type == 'exec'){
Ext.callback(cb, scope, [true, e, stmt]);
}else{
var r = [];
var result = stmt.getResult();
if(result && result.data){
var len = result.data.length;
for(var i = 0; i < len; i++) {
r[r.length] = result.data[i];
}
}
Ext.callback(cb, scope, [r, e, stmt]);
}
},
createStatement : function(type, cb, scope){
var stmt = new air.SQLStatement();
stmt.addEventListener(air.SQLErrorEvent.ERROR, this.onError.createDelegate(this, [stmt, type, cb, scope], true));
stmt.addEventListener(air.SQLEvent.RESULT, this.onResult.createDelegate(this, [stmt, type, cb, scope], true));
stmt.sqlConnection = this.conn;
return stmt;
},
exec : function(sql, cb, scope){
var stmt = this.createStatement('exec', cb, scope);
stmt.text = sql;
stmt.execute();
},
execBy : function(sql, args, cb, scope){
var stmt = this.createStatement('exec', cb, scope);
stmt.text = sql;
this.addParams(stmt, args);
stmt.execute();
},
query : function(sql, cb, scope){
var stmt = this.createStatement('query', cb, scope);
stmt.text = sql;
stmt.execute(this.maxResults);
},
queryBy : function(sql, args, cb, scope){
var stmt = this.createStatement('query', cb, scope);
stmt.text = sql;
this.addParams(stmt, args);
stmt.execute(this.maxResults);
},
addParams : function(stmt, args){
if(!args){ return; }
for(var key in args){
if(args.hasOwnProperty(key)){
if(!isNaN(key)){
stmt.parameters[parseInt(key)+1] = args[key];
}else{
stmt.parameters[':' + key] = args[key];
}
}
}
return stmt;
}
});
|