PhoneGap HTML5 DB操作类, 做本地存储

类库优点:

1. 快速建表

2. 封装CURD操作,更加简洁

3. 兼容PhoneGap

4. 自己用着顺手,简化操作

  1. void function(version){   
  2.        
  3.     var app = function(e) {  
  4.         _this.DB;  
  5.     }  
  6.    
  7.     /** 
  8.      * 初始化数据库  
  9.      * @param {String} dbName 
  10.      * @param {String} dbVersion 
  11.      * @param {String} dbDesc 
  12.      * @param {String} dbSize 
  13.      */  
  14.     app.prototype.dbConnect = function(dbName,dbVersion,dbDesc,dbSize){  
  15.            
  16.         try {  
  17.             if (!window.openDatabase) {  
  18.                 console.log('Databases are not supported in this browser.');  
  19.                 return false;  
  20.             } else {  
  21.                 dbName      = dbName ? dbName : 'SHICAI_APP';  
  22.                 dbVersion   = dbVersion ? dbVersion : '1.0';  
  23.                 dbDesc      = dbDesc ? dbDesc : 'SHICAI_DB for User Mobile';  
  24.                 dbSize      = dbSize ? dbSize : (2 * 1024 * 1024);  
  25.                    
  26.                 _this.DB = openDatabase(dbName, dbVersion, dbDesc, dbSize);   
  27.                    
  28.                 return true;  
  29.             }  
  30.         } catch(e) {  
  31.             if (e == 2) {  
  32.                 console.log("Invalid database version.");  
  33.             } else {  
  34.                 console.log("Unknown error "+e+".");  
  35.             }  
  36.             return false;  
  37.         }  
  38.            
  39.     }  
  40.        
  41.     /** 
  42.      * 创建表 
  43.      * @param {String} tableName 
  44.      * @param {Object} tableField 
  45.      */  
  46.     app.prototype.dbDefineTable = function(tableName,tableField){  
  47.        
  48.         if(!tableName || !tableField){  
  49.             console.log('ERROR: Function "dbCreateTable" tableName or tableField is NULL.');  
  50.         }  
  51.         var fieldArr = [];  
  52.         var fieldItem;  
  53.         var i = 0;  
  54.            
  55.         for (var field in tableField){  
  56.             field.toString();  
  57.             tableField[field].toString();  
  58.             fieldArr[i] = field+' '+tableField[field];  
  59.                
  60.             i++;  
  61.         }  
  62.         fieldItem = fieldArr.join(",").toString();  
  63.            
  64.         var SQL = 'CREATE TABLE IF NOT EXISTS '+tableName+' (';  
  65.         SQL += fieldItem;  
  66.         SQL +=')';  
  67.         console.log(SQL);  
  68.            
  69.         _this.DB.transaction(function(tx){  
  70.             tx.executeSql(SQL,[],function(tx,result){  
  71.                 return true;  
  72.             },function(tx,error){  
  73.                 console.log(error);  
  74.                 return false;  
  75.             });  
  76.         });   
  77.     }  
  78.        
  79.     /** 
  80.      * 插入数据 
  81.      * @param {String} tableName 
  82.      * @param {Object} tableField 
  83.      * @param {Function} funName 
  84.      */  
  85.     app.prototype.dbInsert = function(tableName,tableField,funName){  
  86.        
  87.         if(!tableField){  
  88.             console.log('ERROR: FUNCTION dbInsert tableField is NULL');  
  89.             return false;  
  90.         }  
  91.            
  92.         var fieldKeyArr = [];  
  93.         var fieldValueArr = [];  
  94.         var fieldKey;  
  95.         var fieldValue;  
  96.         var i = 0;  
  97.            
  98.         for (var field in tableField){  
  99.            
  100.             field.toString();  
  101.             tableField[field].toString();  
  102.             fieldKeyArr[i] = field;  
  103.             fieldValueArr[i] = tableField[field];  
  104.             if(typeof(fieldValueArr[i]) !== 'number'){  
  105.                 fieldValueArr[i] = '"'+fieldValueArr[i]+'"';  
  106.             }  
  107.             i++;  
  108.         }  
  109.         fieldKey = fieldKeyArr.join(",");  
  110.         fieldValue = fieldValueArr.join(",");  
  111.    
  112.         var SQL = 'INSERT INTO '+tableName+' (';  
  113.         SQL += fieldKey;  
  114.         SQL += ') ';  
  115.         SQL += 'VALUES (';  
  116.         SQL += fieldValue;  
  117.         SQL += ')';  
  118.         console.log(SQL);   
  119.            
  120.         _this.DB.transaction(function(tx){  
  121.             tx.executeSql(SQL,[],function(tx,result){  
  122.                 funName(result);  
  123.             },function(tx,error){  
  124.                 console.log(error);  
  125.                 return false;  
  126.             });  
  127.         });   
  128.     }  
  129.        
  130.     /** 
  131.      * 查询所有结果 
  132.      * @param {String}  tableName 
  133.      * @param {Function} funName 
  134.      * @param {Object}  tableField 
  135.      * @param {Object}  dbParams 
  136.      */  
  137.     app.prototype.dbFindAll = function(tableName,funName,tableField,dbParams){  
  138.    
  139.         tableField = tableField ? tableField : '*';  
  140.         if(!tableName || !funName){  
  141.             console.log('ERROR: Function "dbFindAll" tableName or funName is NULL.');  
  142.         }  
  143.            
  144.         var SQL = '';  
  145.         SQL +='SELECT '+tableField+' FROM '+tableName;  
  146.            
  147.         _this.DB.transaction(function(tx){  
  148.             tx.executeSql(SQL,[],_findSuccess,function(tx,error){  
  149.                 console.log(error);  
  150.                 return false;  
  151.             });  
  152.         });  
  153.            
  154.         function _findSuccess(tx,result){  
  155.             funName(result);  
  156.         }  
  157.    
  158.     }  
  159.        
  160.     /** 
  161.      * 删除数据 
  162.      * @param {String}  tableName 
  163.      * @param {Object}  dbParams 
  164.      * @param {Function} funName 
  165.      */  
  166.     app.prototype.dbDelete = function(tableName,dbParams,funName){  
  167.        
  168.         if(!tableName || !dbParams){  
  169.             console.log('ERROR: FUNCTION "dbDelete" tableName or dbParams is NULL');  
  170.             return false;  
  171.         }  
  172.         var SQL = '';  
  173.         SQL +='DELETE FROM '+tableName+' WHERE ';  
  174.            
  175.         var paramArr = new Array();  
  176.         var paramStr = '';  
  177.         var i=0;  
  178.         for(var k in dbParams){  
  179.             if(typeof(dbParams[k]) !== 'number'){  
  180.                 dbParams[k] = '"'+dbParams[k]+'"';  
  181.             }  
  182.             paramArr[i] = k.toString()+'='+dbParams[k];  
  183.             i++;  
  184.         }  
  185.         paramStr = paramArr.join(" AND ");  
  186.         SQL += paramStr;  
  187.            
  188.         _this.DB.transaction(function(tx){  
  189.                 tx.executeSql(SQL);  
  190.             },[],function(tx,result){  
  191.                 funName(result);  
  192.             },function(tx,error){  
  193.                 console.log(error);  
  194.                 return false;  
  195.             });  
  196.         console.log(SQL);  
  197.     }  
  198.        
  199.     /** 
  200.      * 更新数据表 
  201.      * @param {String}  *tableName 
  202.      * @param {Object}  *dbParams 
  203.      * @param {Object}  *dbWhere 
  204.      * @param {Function} funName 
  205.      */  
  206.     app.prototype.dbUpdate = function(tableName,dbParams,dbWhere,funName){  
  207.    
  208.         var SQL = 'UPDATE '+tableName+' SET ';  
  209.         var paramArr = new Array();  
  210.         var paramStr = '';  
  211.         var i=0;  
  212.         for(var k in dbParams){  
  213.             if(typeof(dbParams[k]) !== 'number'){  
  214.                 dbParams[k] = '"'+dbParams[k]+'"';  
  215.             }  
  216.             paramArr[i] = k.toString()+'='+dbParams[k];  
  217.             i++;  
  218.         }  
  219.         paramStr = paramArr.join(" , ");  
  220.            
  221.         SQL += paramStr;  
  222.         SQL += ' WHERE ';  
  223.            
  224.         var whereArr = new Array();  
  225.         var whereStr = '';  
  226.         var n=0;  
  227.         for(var w in dbWhere){  
  228.                
  229.             if(typeof(dbWhere[w]) !=='number'){  
  230.                 dbWhere[n] = '"'+dbWhere[w]+'"';  
  231.             }  
  232.             whereArr[n] = w.toString()+'='+dbWhere[w];  
  233.             n++;  
  234.         }  
  235.            
  236.         whereStr = whereArr.join(" AND ");  
  237.            
  238.         SQL += whereStr;  
  239.            
  240.         _this.DB.transaction(function(tx){  
  241.                 tx.executeSql(SQL);  
  242.             },[],function(tx,result){  
  243.                 funName(result);  
  244.             },function(tx,error){  
  245.                 console.log(error);  
  246.                 return false;  
  247.             });  
  248.         console.log(SQL);  
  249.            
  250.     }  
  251.        
  252.     /** 
  253.      * 清空数据表 
  254.      * @param {String} tableName 
  255.      * @return {Boolean} 
  256.      */  
  257.     app.prototype.dbTruncate = function(tableName){  
  258.        
  259.         if(!tableName){  
  260.             console.log('ERROR:Table Name is NULL');  
  261.             return false;  
  262.         }  
  263.            
  264.         function _TRUNCATE(tableName){  
  265.             _this.DB.transaction(function(tx){  
  266.                 tx.executeSql('DELETE TABLE '+tableName);  
  267.             },[],function(tx,result){  
  268.                 console.log('DELETE TABLE '+tableName);  
  269.                 return true;  
  270.             },function(tx,error){  
  271.                 console.log(error);  
  272.                 return false;  
  273.             })  
  274.         }  
  275.            
  276.         _TRUNCATE(tableName);  
  277.     }  
  278.        
  279.     /** 
  280.      * @desc 删除数据表 
  281.      * @param {String} tableName 
  282.      * @return {Boolean} 
  283.      */  
  284.     app.prototype.dbDrop = function(tableName){  
  285.            
  286.         if(!tableName){  
  287.             console.log('ERROR:Table Name is NULL');  
  288.             return false;  
  289.         }  
  290.            
  291.         function _DROP(tableName){  
  292.             _this.DB.transaction(function(tx){  
  293.                 tx.executeSql('DROP TABLE '+tableName);  
  294.             },[],function(tx,result){  
  295.                 console.log('DROP TABLE '+tableName);  
  296.                 return true;  
  297.             },function(tx,error){  
  298.                 console.log(error);  
  299.                 return false;  
  300.             })  
  301.         }  
  302.            
  303.         _DROP(tableName);  
  304.     }  
  305.        
  306. }('1.0');  

PhoneGap 的详细介绍:请点这里
PhoneGap 的下载地址:请点这里

相关推荐