论IOS应用开发中数据库访问的方式

2020-09-21 08:38刘庆
科技创新导报 2020年18期

刘庆

摘   要:移动互联网的发展成为当下越来越热门的话题,各类移动APP应用随着中国经济飞速发展而快速增长。移动APP应用离不开数据的存储,在IOS开发中,数据存储可以使用文件或数据库的方式。而一般的归档、plist文件、偏好设置都是存储为文件。本文主要论述了在IOS平台下,基于XCODE集成开发环境,Objective-c编程语言中,IOS应用开发中本地和远程数据库访问的方式和步骤,详细描述了SQLite关系关系型数据库的连接、数据读取操作的方法和功能函数的调用实现。同时以项目的登陆功能为例,通过对接口文件的使用,实现对于远程服务器数据库的访问与连接。

关键词:IOS  数据访问  APP

中图分类号:TP311                                 文献标识码:A                        文章编号:1674-098X(2020)06(c)-0116-02

1  引言

当我们在做PC端的应用开发的时候,常见的数据库连接方式有:DAO、ADO、ODBC、JDBC等。通过服务器端的数据支持提供前端的数据应用,可以根据数据访问量的大小调整在线访问或是离线访问,可以设置访问的并发性等。但是移动设备硬件资源有限,移动APP通常会在设备本地存储一些数据,这可以为程序执行更良好的性能或离线访问提供支持。在iOS上,移动APP可以将信息输出或存储到Plist文件、SQLite数据库文件中。

属性列表(Plist,Property List)是一种结构化的二进制格式文件,包含了内嵌键值对的可执行bundle的基本配置信息。Plist文件主要用于存储App的用户设置及配置信息,例如,游戏类App经常会在Plist文件中存储游戏等级和分数信息。一般来说,App会将存储用户数据的Plist文件保存在“[App home目录]/documents/”目录下。Plist文件可以是XML格式或二进制格式。

SQLite是一种自包含、可嵌入、0配置的SQL数据库引擎的跨平台C库文件。它的表、触发器和视图整个数据库都包含在一个硬盘文件中。SQLite数据库提供了所有标准的SQL结构,包括select、insert、update和delete。APP一般会将其保存在“[App home目录]/documents/”目录下。由于SQLite的轻便、稳定和小巧,它已成为一个在iOS设备上存储数据的优秀解决方案。

下面我们将详细论述,在IOS中移动APP如何实现本地数据和远程数据的访问。

2  本地数据库的访问

在一些小程序中,需要保存程序运行中的数据,为了方便处理,在ios中一般会将数据库捆绑在程序中,我们称之为本地数据库访问。

为了更好的描述本地访问数据库的方式,我们以SQLite提供本地数据库为例,SQLite是一個小型的关系型数据库。当我们在本机创建好了数据库,并把数据库的文件保存为db_file.sqlite3。这时我们将在ios中实现对数据的读写存储,首先需要先在Xcode中将libsqlite3.dylib库文件添加到项目中,然后再将已创建好的db_file.sqlite3数据库文件引入到项目中。

不管是哪种平台,对数据库中的数据进行操作的方法思路都相似,具体方法步骤如下。

2.1 连接并打开数据库

在访问SQLite数据库文件,需要SQLite库中相应的方法支持,要添加导入语句:#import “sqlite3.h”

定义一个变量database变量,用来存放数据库连接。

@property(nonatomic) sqlite3 *database;

定义方法sqliteDBFilePath,获取数据库文件的路径。

- (NSString *) sqliteDBFilePath

{

return[[[NSBundle mainBundle]esourcePath]

stringByAppendingPathComponent :@" db_file.sqlite3"];

}

定义方法initDatabaseConnection,初始化数据库连接,打开连接,并返回数据库连接,存放在database中。

- (void) initDatabaseConnection

{

if (sqlite3_open([[self sqliteDBFilePath] UTF8String], &database) != SQLITE_OK)

{

sqlite3_close(database);

NSAssert1(0, @"Failed to open database with message '%s'.", sqlite3_errmsg(database));

}

}

2.2 读取操作数据

对数据表的数据进行读写,首先定义sql语句,例如从表中读取出所有的数据,可以定以定义字符串,然后将该sql语句编译为sqlite内部的一个结构体。

const char *sql = "SELECT * FROM tb_table1 ";

sqlite3_prepare_v2(kBookDatabase, sql, -1, &fetchBookIndexesStatement, NULL);

调用sqlite3_step方法执行sql语句,将结果进行相应的处理。

sqlite3_step(fetchBookIndexesStatement)

2.3 关闭数据库

当数据库访问结束后,及时的关闭数据库,释放数据库占用过的资源。

- (void) closeDatabase

{

if (sqlite3_close(database) != SQLITE_OK)

{

NSAssert1(0, @"Error: failed to close database with message '%s'.", sqlite3_errmsg(database));

}

}

3  远程数据库服务器的访问

本地数据库的访问仅供用户本机上的数据保存与访问,现在我们更多的是访问网络数据库实现数据的共享。一般来讲,我们的项目包含前台和后台部分。后台是数据库服务器,前台则是我们用户程序。我们通过前台的应用程序访问后台数据,实现用户交互、数据的共享。用户程序是如何访问远程服务器中的数据?

3.1 远程数据库服务器的接口信息

首先需知道服务器的网络地址,在此假定服务器地址为:server:http://182.114.11.2,我们以用户登录功能为例。从系统的数据库开发文档中,获取有关登陆功能需要访问的数据表接口文件。

接口文件详细列明了服务器访问的地址,访问时需要给出的参数,访问后的结果。

3.2 连接服务器

根据接口中的类型post定义一个方法,在项目开发中,定义文件都是分类存储,对于接口数据库的类,我们单独定义了一个RequestAPI类,其中的方法主要是用来访问和连接服务器。

+ (void)postURL:(NSString *)request withParameters:(NSDictionary *)parameter success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure {

NSString *server ="http://182.114.11.2";

NSString *url = [NSString stringWithFormat:@"%@%@", server, request];

NSString *decodedURL = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

[[AppAPIClient sharedJSONClient] POST:decodedURL parameters:parameter progress:nil success:^(NSURLSessionDataTask *operation, id responseObject) {

success(responseObject);

} failure: ^(NSURLSessionDataTask *operation, NSError *error) {

failure(error);

}];

}

3.3 數据访问结果

首先定义功能接口url。

NSString *request = @"/login";

其次定义接口中的入参。其中调用的[Utilities uniqueVendor]是用来获取手机的设备号。

NSDictionary *parameters = @{@"deviceId" : [Utilities uniqueVendor], @"deviceType" : @7001, @"userName" : _usernameTF.text, @"password" : encodedPwd};

调用RequestAPI类中的postURL方法连接数据库

[RequestAPI postURL:request withParameters:parameters success:^(id responseObject) {

//判断连接访问数据库后的结果。根据接口文件中列明的成功返回值为8001

if ([responseObject[@"resultFlag"] integerValue] == 8001) {

……

}

4  结语

在IOS中常见的数据存储形式有plist格式文件存储、沙盒存储、文件存储、数据库存储,在本文中,主要描述数据库存储中的本地和远程访问方式,对两者在数据库连接、数据读写操作等方法和函数的调用,功能的实现进行了描述。

参考文献

[1] 崔璨,王朋娇,段婷婷.基于iOS系统的MOOC学习APP优化策略研究[J].软件导刊,2017,16(9):10-13,18.

[2] 赵双久.数据库访问技术在VB编程开发中的应用[J].电脑知识与技术,2019,15(31):11-12.

[3] 段世娟.数据库访问技术在VB编程开发中的应用[J].电子技术与软件工程,2019(15):120-121.

[4] 李清平,孟祥芳,宋国顺.基于iOS系统的天气App程序开发与应用[J].软件工程,2017,20(11):41-43.

[5] 邱博. 面向iOS平台的多数据库访问模式研究[D]. 2014.

[6] 陈旭. 软件开发中数据库设计理论及设计方式研究[J]. 信息与电脑, 2016, 361(15):148-149.