CN103136379B - 一种基于Android终端的多数据库访问方法 - Google Patents
一种基于Android终端的多数据库访问方法 Download PDFInfo
- Publication number
- CN103136379B CN103136379B CN201310104184.1A CN201310104184A CN103136379B CN 103136379 B CN103136379 B CN 103136379B CN 201310104184 A CN201310104184 A CN 201310104184A CN 103136379 B CN103136379 B CN 103136379B
- Authority
- CN
- China
- Prior art keywords
- content provider
- database
- provider
- main contents
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000004891 communication Methods 0.000 claims description 4
- 238000005192 partition Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013517 stratification Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明一种基于Android终端的多数据库访问方法,首先在Android终端上构建主内容提供器-从内容提供器两者共存的访问架构;其次,将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作;最后主内容提供器、从内容提供器根据应用程序的调用请求实现对多个数据库的同时访问。本发明通过构建主内容提供器-从内容提供器的访问架构简化了原生Android的内容提供器对多个数据库访问时的复杂处理流程,提高了处理效率。
Description
技术领域
本发明属于智能手持终端操作系统领域,特别是一种基于Android终端的多数据库访问方法。
背景技术
Android是一个架构良好的层次化软硬件平台,可以分为四层:最上层为应用程序层,由操作系统厂商或者第三方开发人员提供多种功能的应用程序;第二层为应用框架层,提供应用程序运行的Java层框架及必要的基础服务等;第三层为系统运行库层,提供系统库和Android运行时库;最底层为Linux内核层,提供必要的操作系统内核驱动和硬件驱动。其中应用框架层是进行应用开发的基础,它提供了丰富的API接口,简化了组件的重用,应用程序开发者可以直接使用或继承这些组件进行快速的应用程序开发。
内容提供器(ContentProvider)是应用框架层提供的一类重要组件,它为Android应用程序之间的数据访问和数据交换提供标准接口,待访问数据以通用资源标识符(UniformResourceIdentifier,简称URI)的形式提供给应用程序,应用程序无需知道数据的具体存储形式和存储位置。典型的内容提供器体系结构和交互流程如附图1所示,详细交互流程为:1)应用程序调用内容提供器的数据访问接口,包括数据查询接口query、数据插入接口insert、数据更新接口update和数据删除接口delete;2)内容提供器将数据访问接口的调用转换成URI匹配操作;3)URI匹配操作将数据访问接口的调用转换成SQL语句并对待访问数据进行实际操作;4)内容提供器将操作结果返回给应用程序。以上步骤对应用程序的用户都是透明的,用户无需了解内容提供器的实现细节。
URI是一种标识符,例如:content://com.android.contacts/contacts/1。URI由三部分组成:协议类型、资源提供方、数据路径,上例中”content://”为协议类型,”com.android.contacts”为资源提供方,”/contacts/1”为数据路径。通过URI可以映射到相应的数据,上例URI的含义是id为1的联系人。
待访问数据依据其形态可分为文件、数据库、网络数据,其中数据库存储方式因其功能强大、访问便捷得到广泛应用。对于待访问数据存放在多个数据库而需要同时访问的情况,例如手机安全厂商将短信分为普通短信、秘密短信和机密短信分别存储,如何高效地同时操作多个相同库表结构的数据库是一个挑战。采用传统的方式为操作每个数据库撰写业务流程,包括创建数据表、索引、视图、触发器等,将产生大量冗余业务流程,给开发和维护带来极大不便。
发明内容
本发明的目的在于提供一种基于Android终端的多数据库访问方法,使用该方法可以方便地同时操作Android终端中多个相同库表结构的数据库。
实现本发明目的的技术方案为:一种基于Android终端的多数据库访问方法,该方法基于Android终端构建,具体包括以下步骤:
步骤一、在Android终端上构建主内容提供器-从内容提供器两者共存的访问架构;
步骤二、将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作;
步骤三、主内容提供器、从内容提供器根据应用程序的调用请求实现对多个数据库的同时访问。
进一步地优选方案,本发明基于Android终端的多数据库访问方法中,所述步骤一中构建主内容提供器-从内容提供器两者共存的的访问架构,具体为:
(1-1)构建主内容提供器:该主内容提供器继承自原生Android内容提供器且具备原生Android内容提供器的所有接口;
(1-2)构建从内容提供器:该从内容提供器不继承自原生Android内容提供器,但具有与原生Android内容提供器相同的数据查询接口、数据插入接口、数据更新接口和数据删除接口;
(1-3)主内容提供器通过调用从内容提供器的数据查询接口、数据插入接口、数据更新接口和数据删除接口来构建两者的通信通道。
进一步地优选方案,本发明基于Android终端的多数据库访问方法中,所述步骤二中将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作,具体为:
(2-1)、将多个库表结构相同的数据库划分为主数据库和从数据库,设置两者ID分界值,所述主数据库的ID小于等于分界值;所述从数据库为除主数据库之外的其他数据库,其数量为2-n个,n小于10;
(2-2)、将主数据库挂接到主内容提供器,主内容提供器只对主数据库进行操作;
(2-3)、将主数据库和从数据库挂接到从内容提供器,从内容提供器同时对所有数据库进行操作。
进一步地优选方案,本发明基于Android终端的多数据库访问方法中,所述步骤三中主内容提供器、从内容提供器根据应用程序的调用请求实现对多个数据库的同时访问,具体为:
(3-1)、应用程序调用主内容提供器的接口,当调用的接口为数据访问接口、数据插入接口、数据更新接口和数据删除接口时执行(3-2);否则,主内容提供器直接访问主数据库;
(3-2)、主内容提供器对该调用请求进行判断,具体如下:
解析调用请求中的URI,得到该调用请求中数据库对象的ID号或ID区间:如果该ID号属于从数据库或ID区间内存在属于从数据库的ID,则该调用请求由从内容提供器处理;否则由主内容提供器处理。
(3-3)、从内容提供器根据调用请求中数据库对象的ID号或ID区间,选择访问相应的主数据库和/或从数据库;并将访问结果反馈给主内容提供器。
本发明与现有技术相比,其显著优点为:(1)本发明通过构建主内容提供器-从内容提供器的访问架构简化了原生Android的内容提供器对多个数据库访问时的复杂处理流程,提高了处理效率;(2)本发明通过构建主数据库、从数据库的多数据库架构,实现不同密级的数据存储在不同的数据库中,保证数据的安全性,同时通过设置多数据库的ID分界值及主-从内容提供器的访问构建,实现了对多个数据库同时访问;(3)本发明在数据库数目变化的情况下系统结构无需改动,具有很好的自适应性。
下面结合具体实施方式对本发明做进一步详细的描述:
附图说明
图1是原生Android内容提供器的体系结构和交互流程图。
图2是主内容提供器-从内容提供器的体系架构。
具体实施方式
如图2,本发明的一种基于Android终端的多数据库访问方法,该方法基于Android终端实施,具体包括以下步骤:
步骤一、在Android终端上构建主内容提供器-从内容提供器两者共存的访问架构,具体为:
(1-1)构建主内容提供器:该主内容提供器继承自原生Android内容提供器且具备原生Android内容提供器的所有接口;
(1-2)构建从内容提供器:该从内容提供器不继承自原生Android内容提供器,但具有与原生Android内容提供器相同的数据查询接口、数据插入接口、数据更新接口和数据删除接口;
(1-3)主内容提供器通过调用从内容提供器的数据查询接口、数据插入接口、数据更新接口和数据删除接口来构建两者的通信通道。
步骤二、将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作,具体为:
(2-1)、将多个库表结构相同的数据库划分为主数据库和从数据库,设置两者ID分界值,所述主数据库的ID小于等于分界值;所述从数据库为除主数据库之外的其他数据库,其数量为2-n个,n小于10;
(2-2)、将主数据库挂接到主内容提供器,主内容提供器只对主数据库进行操作;
(2-3)、将主数据库和从数据库挂接到从内容提供器,从内容提供器同时对所有数据库进行操作。
步骤三、主内容提供器、从内容提供器根据应用程序的调用请求实现对多个数据库的同时访问,具体为:
(3-1)、应用程序调用主内容提供器的接口,当调用的接口为数据访问接口、数据插入接口、数据更新接口和数据删除接口时执行(3-2);否则,主内容提供器直接访问主数据库;
(3-2)、主内容提供器对该调用请求进行判断,具体如下:
解析调用请求中的URI,得到该调用请求中数据库对象的ID号或ID区间:如果该ID号属于从数据库或ID区间内存在属于从数据库的ID,则该调用请求由从内容提供器处理;否则由主内容提供器处理;
(3-3)、从内容提供器根据调用请求中数据库对象的ID号或ID区间,选择访问相应的主数据库和/或从数据库;并将访问结果反馈给主内容提供器。
实施例
短信数据库包括公开短信数据库、加密短信数据库,其中,公开短信数据库为主数据库,加密短信数据库为从数据库,两个数据库ID的分界值为10000,公开短信数据库的ID区间为[1,10000],加密短信数据库的ID区间[10001,20000],具体实施方式如下:
步骤1、在Android终端上构建短信主内容提供器-短信从内容提供器的访问架构;
步骤1-1、构建短信主内容提供器SMSContentProvider。直接继承原生Android内容提供器生成短信主内容提供器,短信主内容提供器具备原生Android内容提供器的所有接口和功能,包括数据查询接口、数据插入接口、数据更新接口和数据删除接口等。
步骤1-2、构建短信从内容提供器SMSSlaveContentProvider,短信从内容提供器不继承自原生Android内容提供器,但是与原生Android内容提供器一样,具有数据查询接口、数据插入接口、数据更新接口和数据删除接口;
步骤1-3、短信主内容提供器通过调用短信从内容提供器的数据查询接口来构建两者的通信通道,短信主内容提供器的查询接口修改后的伪代码如下:
publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){
cursor=mSMSSlaveContentProvider.query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor==null){
cursor=queryFromMasterDb();
}
returncursor;
}
步骤2,将公开短信数据库、加密短信数据库分别挂接到短信主内容提供器和短信从内容提供器,使得短信主内容提供器和短信从内容提供器可对相应的数据库执行操作:
步骤2-1,将公开短信数据库挂接到短信主内容提供器,短信主内容提供器只对公开短信数据库进行操作,伪代码如下:
db.execSQL("ATTACHDATABASE‘/sdcard/contacts.db’AScontacts”);
步骤2-2,将公开短信数据库和私密短信数据库挂接到短信从内容提供器,短信从内容提供器可同时对公开短信数据库和私密短信数据库进行操作。
步骤3,短信应用程序对公开短信数据库和私密短信数据库同时进行操作,详细步骤如下:
步骤3-1,短信应用程序调用短信主内容提供器的数据查询接口;
步骤3-2,解析调用请求中的URI,得到该调用请求中数据库对象的ID号为[9995,10005],该ID区间存在属于私密短信数据库的ID,因此该调用请求为由短信从内容提供器处理。
步骤3-3,短信从内容提供器同时访问公开短信数据库和私密短信数据库,并将访问结果反馈给短信主内容提供器,其伪代码如下:
publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){
if(!mAttached)returnnull;
id=parseUri(uri);
if(id<10000)
returnqueryFromMainDB();//实现查询主数据库数据功能
else
returnqueryFromAllDB();//实现查询所有数据库数据功能。
本发明对数据插入接口、数据更新接口和数据删除接口的实现过程与实施例中的数据查询接口的实现方法相同。
Claims (2)
1.一种基于Android终端的多数据库访问方法,其特征在于,包括以下步骤:
步骤一、在Android终端上构建主内容提供器-从内容提供器两者共存的访问架构,具体为:
(1-1)构建主内容提供器:该主内容提供器继承自原生Android内容提供器且具备原生Android内容提供器的所有接口;
(1-2)构建从内容提供器:该从内容提供器不继承自原生Android内容提供器,但具有与原生Android内容提供器相同的数据查询接口、数据插入接口、数据更新接口和数据删除接口;
(1-3)主内容提供器通过调用从内容提供器的数据查询接口、数据插入接口、数据更新接口和数据删除接口来构建两者的通信通道;
步骤二、将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作;
步骤三、主内容提供器、从内容提供器根据应用程序的调用请求实现对多个数据库的同时访问,具体为:
(3-1)、应用程序调用主内容提供器的接口,当调用的接口为数据访问接口、数据插入接口、数据更新接口和数据删除接口时执行(3-2);否则,主内容提供器直接访问主数据库;
(3-2)、主内容提供器对该调用请求进行判断,具体如下:
解析调用请求中的URI,得到该调用请求中数据库对象的ID号或ID区间;如果该ID号属于从数据库或ID区间内存在属于从数据库的ID,则该调用请求由从内容提供器处理;否则由主内容提供器处理;
(3-3)、从内容提供器根据调用请求中数据库对象的ID号或ID区间,选择访问相应的主数据库和/或从数据库;并将访问结果反馈给主内容提供器。
2.根据权利要求1所述的基于Android终端的多数据库访问方法,其特征在于,所述步骤二中将多个库表结构相同的数据库分别挂接到主内容提供器和从内容提供器,使得主内容提供器和从内容提供器对相应的数据库执行操作,具体为:
(2-1)、将多个库表结构相同的数据库划分为主数据库和从数据库,设置两者ID分界值,所述主数据库的ID小于等于分界值;所述从数据库为除主数据库之外的其他数据库,其数量为2-n个,n小于10;
(2-2)、将主数据库挂接到主内容提供器,主内容提供器只对主数据库进行操作;
(2-3)、将主数据库和从数据库挂接到从内容提供器,从内容提供器同时对所有数据库进行操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104184.1A CN103136379B (zh) | 2013-03-28 | 2013-03-28 | 一种基于Android终端的多数据库访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310104184.1A CN103136379B (zh) | 2013-03-28 | 2013-03-28 | 一种基于Android终端的多数据库访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103136379A CN103136379A (zh) | 2013-06-05 |
CN103136379B true CN103136379B (zh) | 2016-04-13 |
Family
ID=48496204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310104184.1A Expired - Fee Related CN103136379B (zh) | 2013-03-28 | 2013-03-28 | 一种基于Android终端的多数据库访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103136379B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943983B (zh) * | 2017-11-30 | 2022-04-15 | 北京酷我科技有限公司 | 一种Android上管理多个数据库操作的方法 |
JP7087908B2 (ja) * | 2018-10-24 | 2022-06-21 | オムロン株式会社 | 制御装置 |
CN111666161B (zh) * | 2019-03-07 | 2024-03-12 | 深圳Tcl数字技术有限公司 | 一种统一设置接口的方法、系统及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1543613A (zh) * | 2001-06-28 | 2004-11-03 | ��˹��ŵ�� | 用于在至少两个数据库中搜索数据的方法 |
CN102521394A (zh) * | 2011-12-23 | 2012-06-27 | 天津星城科技有限公司 | 公共医学数据库 |
CN102572093A (zh) * | 2010-12-21 | 2012-07-11 | Lg电子株式会社 | 移动终端以及其中控制模式切换的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120284116A1 (en) * | 2011-05-02 | 2012-11-08 | Herman John C | Systems and methods for incentivized network advertising and data aggregation |
-
2013
- 2013-03-28 CN CN201310104184.1A patent/CN103136379B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1543613A (zh) * | 2001-06-28 | 2004-11-03 | ��˹��ŵ�� | 用于在至少两个数据库中搜索数据的方法 |
CN102572093A (zh) * | 2010-12-21 | 2012-07-11 | Lg电子株式会社 | 移动终端以及其中控制模式切换的方法 |
CN102521394A (zh) * | 2011-12-23 | 2012-06-27 | 天津星城科技有限公司 | 公共医学数据库 |
Also Published As
Publication number | Publication date |
---|---|
CN103136379A (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210011911A1 (en) | Multi-tenancy for structured query language (sql) and non structured query language (nosql) databases | |
US11979285B2 (en) | System and method for generic configuration management system application programming interface | |
JP7037555B2 (ja) | サービス層のためのアクセス制御ポリシーの同期 | |
US20160378641A1 (en) | Methods and systems for internally debugging code in an on-demand service environment | |
CN101408899B (zh) | 一种网站多数据源切换方法和装置 | |
US11636098B2 (en) | Computerized implementation framework to abstract data object definitions across multiple computing environments | |
CN106462467A (zh) | 在不同分布式网络上针对消费服务的集成api和ui | |
CN102779244B (zh) | 一种文件操作的执行方法及装置 | |
US9830333B1 (en) | Deterministic data replication with conflict resolution | |
CN102254021A (zh) | 基于虚拟机管理系统的数据库构建方法 | |
US11546228B2 (en) | Zero-touch configuration of network devices using hardware metadata | |
CN102254029A (zh) | 一种基于视图的数据访问系统及其方法 | |
CN102523251A (zh) | 对海量数据处理的云存储架构及应用该架构的云存储平台 | |
US20220103554A1 (en) | Isolated cell architecture for cloud computing platform | |
CN103136379B (zh) | 一种基于Android终端的多数据库访问方法 | |
CN105447051A (zh) | 一种数据库操作的方法和装置 | |
US20180048717A1 (en) | System and method for supporting live addition of a tenant in a connection pool environment | |
US11556557B2 (en) | Techniques for unifying ETL filter operators | |
CN100361121C (zh) | 一种通用对象建模方法及通用对象管理系统 | |
US8873527B2 (en) | System and method for managing routers and communication interfaces on a computing device | |
WO2024060956A1 (zh) | 一种混合数据库管理方法、装置、混合数据库及电子设备 | |
CN107992498A (zh) | 一种将数据导入数据仓库的方法及系统 | |
CN109960709B (zh) | 一种数据库驱动的处理方法、装置、设备及存储介质 | |
US11636139B2 (en) | Centralized database system with geographically partitioned data | |
CN105511273A (zh) | 一种客户端运行管理方法及客户端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160413 |
|
CF01 | Termination of patent right due to non-payment of annual fee |