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

jopen 12年前

类库优点:</span>
1. 快速建表</span>
2. 封装CURD操作,更加简洁</span>
3. 兼容PhoneGap</span>
</span></span>

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

void function(version){              var app = function(e) {          _this.DB;      }         /**       * 初始化数据库        * @param {String} dbName       * @param {String} dbVersion       * @param {String} dbDesc       * @param {String} dbSize       */      app.prototype.dbConnect = function(dbName,dbVersion,dbDesc,dbSize){                     try {              if (!window.openDatabase) {                  console.log('Databases are not supported in this browser.');                  return false;              } else {                  dbName      = dbName ? dbName : 'SHICAI_APP';                  dbVersion   = dbVersion ? dbVersion : '1.0';                  dbDesc      = dbDesc ? dbDesc : 'SHICAI_DB for User Mobile';                  dbSize      = dbSize ? dbSize : (2 * 1024 * 1024);                                     _this.DB = openDatabase(dbName, dbVersion, dbDesc, dbSize);                                      return true;              }          } catch(e) {              if (e == 2) {                  console.log("Invalid database version.");              } else {                  console.log("Unknown error "+e+".");              }              return false;          }                 }             /**       * 创建表       * @param {String} tableName       * @param {Object} tableField       */      app.prototype.dbDefineTable = function(tableName,tableField){                 if(!tableName || !tableField){              console.log('ERROR: Function "dbCreateTable" tableName or tableField is NULL.');          }          var fieldArr = [];          var fieldItem;          var i = 0;                     for (var field in tableField){              field.toString();              tableField[field].toString();              fieldArr[i] = field+' '+tableField[field];                             i++;          }          fieldItem = fieldArr.join(",").toString();                     var SQL = 'CREATE TABLE IF NOT EXISTS '+tableName+' (';          SQL += fieldItem;          SQL +=')';          console.log(SQL);                     _this.DB.transaction(function(tx){              tx.executeSql(SQL,[],function(tx,result){                  return true;              },function(tx,error){                  console.log(error);                  return false;              });          });       }             /**       * 插入数据       * @param {String} tableName       * @param {Object} tableField       * @param {Function} funName       */      app.prototype.dbInsert = function(tableName,tableField,funName){                 if(!tableField){              console.log('ERROR: FUNCTION dbInsert tableField is NULL');              return false;          }                     var fieldKeyArr = [];          var fieldValueArr = [];          var fieldKey;          var fieldValue;          var i = 0;                     for (var field in tableField){                         field.toString();              tableField[field].toString();              fieldKeyArr[i] = field;              fieldValueArr[i] = tableField[field];              if(typeof(fieldValueArr[i]) !== 'number'){                  fieldValueArr[i] = '"'+fieldValueArr[i]+'"';              }              i++;          }          fieldKey = fieldKeyArr.join(",");          fieldValue = fieldValueArr.join(",");             var SQL = 'INSERT INTO '+tableName+' (';          SQL += fieldKey;          SQL += ') ';          SQL += 'VALUES (';          SQL += fieldValue;          SQL += ')';          console.log(SQL);                      _this.DB.transaction(function(tx){              tx.executeSql(SQL,[],function(tx,result){                  funName(result);              },function(tx,error){                  console.log(error);                  return false;              });          });       }             /**       * 查询所有结果       * @param {String}  tableName       * @param {Function} funName       * @param {Object}  tableField       * @param {Object}  dbParams       */      app.prototype.dbFindAll = function(tableName,funName,tableField,dbParams){             tableField = tableField ? tableField : '*';          if(!tableName || !funName){              console.log('ERROR: Function "dbFindAll" tableName or funName is NULL.');          }                     var SQL = '';          SQL +='SELECT '+tableField+' FROM '+tableName;                     _this.DB.transaction(function(tx){              tx.executeSql(SQL,[],_findSuccess,function(tx,error){                  console.log(error);                  return false;              });          });                     function _findSuccess(tx,result){              funName(result);          }         }             /**       * 删除数据       * @param {String}  tableName       * @param {Object}  dbParams       * @param {Function} funName       */      app.prototype.dbDelete = function(tableName,dbParams,funName){                 if(!tableName || !dbParams){              console.log('ERROR: FUNCTION "dbDelete" tableName or dbParams is NULL');              return false;          }          var SQL = '';          SQL +='DELETE FROM '+tableName+' WHERE ';                     var paramArr = new Array();          var paramStr = '';          var i=0;          for(var k in dbParams){              if(typeof(dbParams[k]) !== 'number'){                  dbParams[k] = '"'+dbParams[k]+'"';              }              paramArr[i] = k.toString()+'='+dbParams[k];              i++;          }          paramStr = paramArr.join(" AND ");          SQL += paramStr;                     _this.DB.transaction(function(tx){                  tx.executeSql(SQL);              },[],function(tx,result){                  funName(result);              },function(tx,error){                  console.log(error);                  return false;              });          console.log(SQL);      }             /**       * 更新数据表       * @param {String}  *tableName       * @param {Object}  *dbParams       * @param {Object}  *dbWhere       * @param {Function} funName       */      app.prototype.dbUpdate = function(tableName,dbParams,dbWhere,funName){             var SQL = 'UPDATE '+tableName+' SET ';          var paramArr = new Array();          var paramStr = '';          var i=0;          for(var k in dbParams){              if(typeof(dbParams[k]) !== 'number'){                  dbParams[k] = '"'+dbParams[k]+'"';              }              paramArr[i] = k.toString()+'='+dbParams[k];              i++;          }          paramStr = paramArr.join(" , ");                     SQL += paramStr;          SQL += ' WHERE ';                     var whereArr = new Array();          var whereStr = '';          var n=0;          for(var w in dbWhere){                             if(typeof(dbWhere[w]) !=='number'){                  dbWhere[n] = '"'+dbWhere[w]+'"';              }              whereArr[n] = w.toString()+'='+dbWhere[w];              n++;          }                     whereStr = whereArr.join(" AND ");                     SQL += whereStr;                     _this.DB.transaction(function(tx){                  tx.executeSql(SQL);              },[],function(tx,result){                  funName(result);              },function(tx,error){                  console.log(error);                  return false;              });          console.log(SQL);                 }             /**       * 清空数据表       * @param {String} tableName       * @return {Boolean}       */      app.prototype.dbTruncate = function(tableName){                 if(!tableName){              console.log('ERROR:Table Name is NULL');              return false;          }                     function _TRUNCATE(tableName){              _this.DB.transaction(function(tx){                  tx.executeSql('DELETE TABLE '+tableName);              },[],function(tx,result){                  console.log('DELETE TABLE '+tableName);                  return true;              },function(tx,error){                  console.log(error);                  return false;              })          }                     _TRUNCATE(tableName);      }             /**       * @desc 删除数据表       * @param {String} tableName       * @return {Boolean}       */      app.prototype.dbDrop = function(tableName){                     if(!tableName){              console.log('ERROR:Table Name is NULL');              return false;          }                     function _DROP(tableName){              _this.DB.transaction(function(tx){                  tx.executeSql('DROP TABLE '+tableName);              },[],function(tx,result){                  console.log('DROP TABLE '+tableName);                  return true;              },function(tx,error){                  console.log(error);                  return false;              })          }                     _DROP(tableName);      }         }('1.0');