Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / docs / source / ext-air-db.html
1 <html>\r
2 <head>\r
3   <title>The source code</title>\r
4     <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
5     <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
6 </head>\r
7 <body  onload="prettyPrint();">\r
8     <pre class="prettyprint lang-js"> Ext.data.AirDB = Ext.extend(Ext.data.SqlDB, {\r
9         open : function(db, cb, scope){\r
10                 this.conn = new air.SQLConnection();\r
11 \r
12                 var file = air.File.applicationResourceDirectory.resolve(db);\r
13 \r
14                 this.conn.addEventListener(air.SQLEvent.OPEN, this.onOpen.createDelegate(this, [cb, scope]));\r
15                 this.conn.addEventListener(air.SQLEvent.CLOSE, this.onClose.createDelegate(this));\r
16                 this.conn.open(file, true);\r
17         },\r
18 \r
19         close : function(){\r
20                 this.conn.close();\r
21         },\r
22 \r
23         onOpen : function(cb, scope){\r
24                 this.openState = true;\r
25                 Ext.callback(cb, scope, [this]);\r
26                 this.fireEvent('open', this);\r
27         },\r
28 \r
29         onClose : function(){\r
30                 this.fireEvent('close', this);\r
31         },\r
32 \r
33         onError : function(e, stmt, type, cb, scope){\r
34                 Ext.callback(cb, scope, [false, e, stmt]);\r
35         },\r
36 \r
37         onResult : function(e, stmt, type, cb, scope){\r
38                 if(type == 'exec'){\r
39                         Ext.callback(cb, scope, [true, e, stmt]);\r
40                 }else{\r
41                         var r = [];\r
42                         var result = stmt.getResult();\r
43                         if(result && result.data){\r
44                         var len = result.data.length;\r
45                         for(var i = 0; i < len; i++) {\r
46                             r[r.length] = result.data[i];\r
47                         }\r
48                     }\r
49                         Ext.callback(cb, scope, [r, e, stmt]);\r
50                 }\r
51         },\r
52 \r
53         createStatement : function(type, cb, scope){\r
54 \r
55                 var stmt = new air.SQLStatement();\r
56 \r
57                 stmt.addEventListener(air.SQLErrorEvent.ERROR, this.onError.createDelegate(this, [stmt, type, cb, scope], true));\r
58                 stmt.addEventListener(air.SQLEvent.RESULT, this.onResult.createDelegate(this, [stmt, type, cb, scope], true));\r
59 \r
60                 stmt.sqlConnection = this.conn;\r
61 \r
62                 return stmt;\r
63         },\r
64 \r
65         exec : function(sql, cb, scope){\r
66                 var stmt = this.createStatement('exec', cb, scope);\r
67                 stmt.text = sql;\r
68                 stmt.execute();\r
69         },\r
70 \r
71         execBy : function(sql, args, cb, scope){\r
72                 var stmt = this.createStatement('exec', cb, scope);\r
73                 stmt.text = sql;\r
74                 this.addParams(stmt, args);\r
75                 stmt.execute();\r
76         },\r
77 \r
78         query : function(sql, cb, scope){\r
79                 var stmt = this.createStatement('query', cb, scope);\r
80                 stmt.text = sql;\r
81                 stmt.execute(this.maxResults);\r
82         },\r
83 \r
84         queryBy : function(sql, args, cb, scope){\r
85                 var stmt = this.createStatement('query', cb, scope);\r
86                 stmt.text = sql;\r
87                 this.addParams(stmt, args);\r
88                 stmt.execute(this.maxResults);\r
89         },\r
90 \r
91     addParams : function(stmt, args){\r
92                 if(!args){ return; }\r
93                 for(var key in args){\r
94                         if(args.hasOwnProperty(key)){\r
95                                 if(!isNaN(key)){\r
96                                         stmt.parameters[parseInt(key)+1] = args[key];\r
97                                 }else{\r
98                                         stmt.parameters[':' + key] = args[key];\r
99                                 }\r
100                         }\r
101                 }\r
102                 return stmt;\r
103         }\r
104 });</pre>    \r
105 </body>\r
106 </html>