专利名称:Web程序访问本地数据库的方法及装置的制作方法
技术领域:
本发明属于通信领域,尤其涉及一种Web程序访问本地数据库的方法及装置。
背景技术:
目前要做一个内嵌html的应用程序,如果在html中javascript脚本访问本应用的数据库需要调用本地程序接口,无法直接访问本地应用的数据库,需要通过应用程序的中间件代码来实现javascript脚本访问本地数据库,而且javascript脚本与本地程序代码互相调用的时候没有返回值和回调函数,无法像正常函数一样进行调用,给开发人员在程序设计上造成了很多不必要的麻烦,如果交互数据量比较大,会浪费很多系统内存,导致应用程序看起来会“一卡一卡”的,用户体验感不好。
发明内容
本发明实施例的目的在于提供一种Web程序访问本地数据库的方法及装置,旨在解决现有的Web程序·无法直接访问本地存储空间的问题。本发明实施例是这样实现的,一种Web程序访问本地数据库的方法,所述方法包括步骤:Web程序的javascript脚本调用预设的本地数据库的接口函数;当所述本地数据库存在时,访问所述本地数据库。进一步地,在执行所述Web程序的javascript脚本调用预设的本地数据库的接口函数之前,还包括:设置所述本地数据库的访问权限。进一步地,在执行Web程序的javascript脚本调用本地数据库的接口函数之后,还包括:判断本地数据库的访问权限是否开启,当所述本地数据库的访问权限开启时,允许访问所述本地数据库。进一步地,在执行所述Web程序的javascript脚本调用预设的本地数据库的接口函数之后,还包括:当所述本地数据库不存在时,创建所述本地数据库。进一步地,在执行所述访问本地数据库之后,还包括:返回所述本地数据库的对象。本发明还提出一种Web程序访问本地数据库的装置,所述装置包括:调用模块,用于调用预设的本地数据库的接口函数;访问模块,用于当所述本地数据库存在时,访问所述本地数据库。进一步地,所述装置还包括:设置权限模块,用于设置所述本地数据库的访问权限。进一步地,所述装置还包括:
判断模块,用于判断本地数据库的访问权限是否开启,当所述本地数据库的访问权限开启时,允许访问所述本地数据库。进一步地,所述装置还包括:创建模块,用于当所述本地数据库不存在时,创建所述本地数据库。进一步地,所述装置还包括:返回对象模块,用于返回所述本地数据库的对象。本发明实施例中,在Web程序中添加了一个访问给定路径的数据库的接口,使得Web程序在操作系统允许的条件下直接访问本地数据库。本发明实施例克服了现有技术中存在的应用程序内嵌Web浏览器无法访问本应用数据库的问题,提供一种应用程序内嵌Web浏览器访问本地数据库的方法,从而使程序架构更为合理,降低内存损耗,用户体验感更强。与现有技术相比,本发明实施例节省了因为大量的数据交互所消耗的系统内存,同时提高了代码设计的合理性和可维护性,不仅使得开发人员更加容易的开发自己想要的应用,而且让应用看起来运行的更加流畅。
图1是本发明实施例一提供的Web程序访问本地数据库的方法的流程图;图2是本发明实施例二提供的Web程序访问本地数据库的装置的结构图。
具体实施例方式为了使本发 明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例包括以下模块:操作系统应用模块、浏览器内核引擎模块。所述操作系统应用模块是操作系统向第三方应用程序提供的一系列api接口,第三方应用程序可以通过api接口设计应用程序的业务逻辑,从而实现应用程序的功能。所述浏览器内核引擎模块是一套处理标记语言(例如html、xml、图片文件等)和格式化信息(例如css、xsl、xml等)并且进行内容展现的应用软件组件。浏览器通过解析上述文件,分析出需要做的业务逻辑,从而达到应用程序本身想要的效果。本发明实施例的主要思想是将Web程序如浏览器显示的界面内嵌到操作系统应用模块中,html通过预设的javascript脚本的接口函数访问应用程序的数据库,从而达到不需要调用本地应用程序的应用接口就可以对本地应用程序的数据库进行操作。实施例一本发明实施例一提出一种Web程序访问本地数据库的方法,该方法包括如下步骤:步骤S1、在Web程序的javascript脚本中预先设置一访问本地数据库的接口函数,即在用于解析Web程序的Javascript脚本中window对象的文件中添加新的方法。修改Web程序内核接口,添加新的用于专门访问本地数据库的接口 openDatabase,此接口有6个参数,分别为数据库的相对路径、数据库名、版本号、描述、数据库大小、回调函数。步骤SI的同时,可设置本地数据库的访问权限:更改操作系统应用模块提供的api接口,提供设置该Web程序是否可以访问本地数据库的权限接口,即设置是否准许访问本地数据库。浏览器引擎模块文件中添加属性供存储能否访问本地数据库的标识。使得内嵌Web程序访问网页的过程中更加安全。步骤S2、Web程序解析Javascript脚本,javascript脚本调用本地数据库的接口函数,并进入步骤S3。步骤S3、判断本地数据库的访问权限是否开启,当所述本地数据库的访问权限开启时,进入步骤S4。步骤S4、当所述本地数据库存在时,访问所述本地数据库,传入本地数据库的相对路径,并进入步骤S5 ;当本地数据库不存在时,进入步骤S6。步骤S5、返回所述本地数据库的对象。步骤S6、创建所述本地数据库。本发明实施例一采用webkit开源浏览器引擎和android2.3开源代码来做作为实例,实际应用中不仅限于此,具体实施如下:1、首先在frameworks\base\core\java\android\webkit\WebSettings.java文件中添加一个供应用程序控制是否能访问本地数据库的接口,setLocalDatabasesEnable O。2、在 external\webkit\webcore\page\Settings.h 文件中添加属性bool m_localDatabasesEnable,可能使用两个方法setLocalDatabasesEnable和1calDatabasesEnable ο3、当上层应·用程序调用setLocalDatabasesEnable方法时,会调到WebSettings.cpp文件中的Sync O函数。在Sync函数中添加设置Settings, h中的m_1calDatabasesEnable 的属性值。4、在 external\webkit\webcore\page\DOMWindow.cpp 类中添加 openDatabase,在原来openDatabase函数的基础上添加一个参数来表示要访问的本地应用数据库相对路径。5、修改 external\webkit\webcore\storage\Database.cpp 中同样重写openDatabase函数,重写构造函数添加一个数据库路径参数。修改代码对m_filename属性赋值为数据库相对路径,调用SQLiteFileSystem的openDatabase来创建数据库。6、最后可以写一段javascript脚本,javascript脚本中调用的openDatabase接口其中一个参数填写要访问本应用程序的相对路径名称,该javascript脚本用于测试本方法添加的接口函数。本发明实施例一的技术方案能通过解析html文件中的javascript脚本来访问嵌AWeb程序的本地应用程序的数据库,使得该应用程序运行时所耗费系统内存更少。进一步地,还可设置Web程序访问本地数据库的权限,使本地数据库的访问更为安全。实施例二本发明实施例二提供一种Web程序访问本地数据库的装置,如图2所示,所述装置包括:设置权限模块10,用于设置所述本地数据库的访问权限;调用模块20,用于调用预设的本地数据库的接口函数;判断模块30,用于判断是否开启本地数据库访问权限,当所述本地数据库访问权限开启时,允许访问所述本地数据库;访问模块40,用于当所述本地数据库存在时,访问所述本地数据库;创建模块50,用于当所述本地数据库不存在时,创建所述本地数据库;返回对象模块60,用于返回所述本地数据库的对象。本发明实施例二的装置在Web程序的javascript脚本中预先设置一访问本地数据库的接口函数,即在用于解析Web程序的Javascript脚本中window对象的文件中添加新的方法。修改Web程序内核接口,添加新的用于专门访问本地数据库的接口openDatabase,此接口有6个参数,分别为数据库的相对路径、数据库名、版本号、描述、数据库大小、回调函数。同时设置权限模块10可更改操作系统应用模块提供的api接口,提供设置该Web程序是否可以访问本地数据库的权限接口,即设置是否准许访问本地数据库。浏览器引擎模块文件中添加属性供存储能否访问本地数据库的标识。使得内嵌Web程序访问网页的过程中更加安全。Web程序解析Javascript脚本时,调用模块20调用本地数据库的接口函数,并通知判断模块30判断本地数据库的访问权限是否开启,如开启,则访问模块40访问本地数据库。本地数据库存在时,访问模块40传入本地数据库的相对路径,再通过返回对象模块60返回所述本地数据库的对象。如该本地数据库不存在,则由创建模块50创建所述本地数据库。本发明实施例二的装置能通过解析html 文件中的javascript脚本来访问嵌入Web程序的本地应用程序的数据库,使得该应用程序运行时所耗费系统内存更少。进一步地,还可设置Web程序访问本地数据库的权限,使本地数据库的访问更为安全。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种Web程序访问本地数据库的方法,其特征在于,所述方法包括步骤: Web程序的javascript脚本调用预设的本地数据库的接口函数; 当所述本地数据库存在时,访问所述本地数据库。
2.如权利要求1所述的方法,其特征在于,在执行所述Web程序的javascript脚本调用预设的本地数据库的接口函数之前,还包括: 设置所述本地数据库的访问权限。
3.如权利要求2所述的方法,其特征在于,在执行Web程序的javascript脚本调用本地数据库的接口函数之后,还包括: 判断本地数据库的访问权限是否开启,当所述本地数据库的访问权限开启时,允许访问所述本地数据库。
4.如权利要求1至3中任一项所述的方法,其特征在于,在执行所述Web程序的javascript脚本 调用预设的本地数据库的接口函数之后,还包括: 当所述本地数据库不存在时,创建所述本地数据库。
5.如权利要求1至3中任一项所述的方法,其特征在于,在执行所述访问本地数据库之后,还包括: 返回所述本地数据库的对象。
6.一种Web程序访问本地数据库的装置,其特征在于,所述装置包括: 调用模块,用于调用预设的本地数据库的接口函数; 访问模块,用于当所述本地数据库存在时,访问所述本地数据库。
7.如权利要求6所述的装置,其特征在于,所述装置还包括: 设置权限模块,用于设置所述本地数据库的访问权限。
8.如权利要求7所述的装置,其特征在于,所述装置还包括: 判断模块,用于判断本地数据库的访问权限是否开启,当所述本地数据库的访问权限开启时,允许访问所述本地数据库。
9.如权利要求6至8中任一项所述的装置,其特征在于,所述装置还包括: 创建模块,用于当所述本地数据库不存在时,创建所述本地数据库。
10.如权利要求6至8中任一项所述的装置,其特征在于,所述装置还包括: 返回对象模块,用于返回所述本地数据库的对象。
全文摘要
本发明适用于通信领域,提供了一种Web程序访问本地数据库的方法及装置,所述方法包括步骤Web程序的javascript脚本调用预设的本地数据库的接口函数;当所述本地数据库存在时,访问所述本地数据库。本发明提供的方法和装置可以使Web程序直接访问本地数据库。
文档编号G06F9/46GK103235739SQ20131014846
公开日2013年8月7日 申请日期2013年4月25日 优先权日2013年4月25日
发明者李全永 申请人:深圳市中兴移动通信有限公司