provide installation instructions
[extjs.git] / air / src / sql / AirConnection.js
1 /*\r
2  * Ext JS Library 0.30\r
3  * Copyright(c) 2006-2009, Ext JS, LLC.\r
4  * licensing@extjs.com\r
5  * \r
6  * http://extjs.com/license\r
7  */\r
8 \r
9  Ext.sql.AirConnection = Ext.extend(Ext.sql.Connection, {\r
10         // abstract methods\r
11     open : function(db){\r
12         this.conn = new air.SQLConnection();\r
13                 var file = air.File.applicationDirectory.resolvePath(db);\r
14                 this.conn.open(file);\r
15         this.openState = true;\r
16                 this.fireEvent('open', this);\r
17     },\r
18 \r
19         close : function(){\r
20         this.conn.close();\r
21         this.fireEvent('close', this);\r
22     },\r
23 \r
24         createStatement : function(type){\r
25                 var stmt = new air.SQLStatement();\r
26                 stmt.sqlConnection = this.conn;\r
27                 return stmt;\r
28         },\r
29 \r
30     exec : function(sql){\r
31         var stmt = this.createStatement('exec');\r
32                 stmt.text = sql;\r
33                 stmt.execute();\r
34     },\r
35 \r
36         execBy : function(sql, args){\r
37                 var stmt = this.createStatement('exec');\r
38                 stmt.text = sql;\r
39                 this.addParams(stmt, args);\r
40                 stmt.execute();\r
41         },\r
42 \r
43         query : function(sql){\r
44                 var stmt = this.createStatement('query');\r
45                 stmt.text = sql;\r
46                 stmt.execute(this.maxResults);\r
47                 return this.readResults(stmt.getResult());\r
48         },\r
49 \r
50         queryBy : function(sql, args){\r
51                 var stmt = this.createStatement('query');\r
52                 stmt.text = sql;\r
53                 this.addParams(stmt, args);\r
54                 stmt.execute(this.maxResults);\r
55                 return this.readResults(stmt.getResult());\r
56         },\r
57 \r
58     addParams : function(stmt, args){\r
59                 if(!args){ return; }\r
60                 for(var key in args){\r
61                         if(args.hasOwnProperty(key)){\r
62                                 if(!isNaN(key)){\r
63                                         var v = args[key];\r
64                                         if(Ext.isDate(v)){\r
65                                                 v = v.format(Ext.sql.Proxy.DATE_FORMAT);\r
66                                         }\r
67                                         stmt.parameters[parseInt(key)] = v;\r
68                                 }else{\r
69                                         stmt.parameters[':' + key] = args[key];\r
70                                 }\r
71                         }\r
72                 }\r
73                 return stmt;\r
74         },\r
75 \r
76     readResults : function(rs){\r
77         var r = [];\r
78         if(rs && rs.data){\r
79                     var len = rs.data.length;\r
80                 for(var i = 0; i < len; i++) {\r
81                     r[r.length] = rs.data[i];\r
82                 }\r
83         }\r
84         return r;\r
85     }\r
86 });