热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PhoneGapHTML5DB操作类,做本地存储

nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd

类库优点:

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 的下载地址:请点这里


推荐阅读
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在使用USB接口的二维条码扫描器时,发现其无法正确识别条码中的中文字符。然而,采用串口连接的方式则能够成功识别。目前面临的问题是如何将通过串口获取的数据在网页中进行实时展示,希望各位专家能提供解决方案,不胜感激。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • 该问题可能由守护进程配置不当引起,例如未识别的JVM选项或内存分配不足。建议检查并调整JVM参数,确保为对象堆预留足够的内存空间(至少1572864KB)。此外,还可以优化应用程序的内存使用,减少不必要的内存消耗。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • Java中不同类型的常量池(字符串常量池、Class常量池和运行时常量池)的对比与关联分析
    在研究Java虚拟机的过程中,笔者发现存在多种类型的常量池,包括字符串常量池、Class常量池和运行时常量池。通过查阅CSDN、博客园等相关资料,对这些常量池的特性、用途及其相互关系进行了详细探讨。本文将深入分析这三种常量池的差异与联系,帮助读者更好地理解Java虚拟机的内部机制。 ... [详细]
  • 本文探讨了一种高效的算法,用于生成所有数字(0-9)的六位组合,允许重复使用数字,并确保这些组合的和等于给定的整数N。该算法通过优化搜索策略,显著提高了计算效率,适用于大规模数据处理和组合优化问题。 ... [详细]
author-avatar
ycc杨乖乖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有