X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/docs/source/ext-air-db.html diff --git a/docs/source/ext-air-db.html b/docs/source/ext-air-db.html new file mode 100644 index 00000000..6b2e2366 --- /dev/null +++ b/docs/source/ext-air-db.html @@ -0,0 +1,106 @@ + + + The source code + + + + +
 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;
+	}
+});
+ + \ No newline at end of file