ext-air-db.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:3k
源码类别:

中间件编程

开发平台:

JavaScript

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