999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

論IOS應用開發中數據庫訪問的方式

2020-09-21 08:38:21劉慶
科技創新導報 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.

主站蜘蛛池模板: 精品久久久久无码| 欧美黄网站免费观看| 99精品国产自在现线观看| 国产精品刺激对白在线| 色综合久久综合网| 日本不卡在线播放| 亚洲精品桃花岛av在线| 91在线精品麻豆欧美在线| 青青草国产在线视频| 欧美精品另类| 激情无码视频在线看| 美女一区二区在线观看| 91精品国产情侣高潮露脸| 国产免费精彩视频| 51国产偷自视频区视频手机观看| 国产一线在线| 国产精鲁鲁网在线视频| 2048国产精品原创综合在线| 亚洲精品国产日韩无码AV永久免费网| 久久久久国产一区二区| 国产女人18毛片水真多1| 亚洲天堂区| 欧美19综合中文字幕| 亚洲欧洲日韩久久狠狠爱| 亚洲av片在线免费观看| 欧美a在线| 中文字幕乱码中文乱码51精品| 波多野结衣中文字幕一区二区 | 亚洲色图欧美| 中字无码av在线电影| 人人91人人澡人人妻人人爽| 欧美不卡视频在线观看| 欧美中文字幕一区| 制服丝袜无码每日更新| 日本一区二区不卡视频| 国产乱子伦视频在线播放| 亚洲欧美在线看片AI| 性欧美精品xxxx| 无码精品一区二区久久久| 国产主播喷水| 国产美女主播一级成人毛片| 2022国产91精品久久久久久| 国产剧情国内精品原创| 日日拍夜夜操| 亚洲无限乱码| 欧美午夜精品| 色香蕉影院| 精品剧情v国产在线观看| 一本综合久久| 一区二区三区高清视频国产女人| 国产免费a级片| 亚洲天堂成人在线观看| 日本精品视频一区二区| 久久亚洲欧美综合| 亚洲精品在线影院| 久久久久亚洲av成人网人人软件| 久久综合色天堂av| 在线播放精品一区二区啪视频| 国产91色| 国产真实乱子伦视频播放| 香蕉视频在线精品| 青青青草国产| 亚洲三级电影在线播放| 欧美精品啪啪一区二区三区| 久久综合激情网| 五月婷婷导航| 国产Av无码精品色午夜| 99视频精品全国免费品| 五月婷婷导航| 嫩草国产在线| 亚洲美女一区二区三区| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产欧美亚洲精品第3页在线| 无码区日韩专区免费系列| 91麻豆国产精品91久久久| 欧美激情伊人| 国产91精品久久| 欧美自拍另类欧美综合图区| 免费一级α片在线观看| 国内精品久久久久久久久久影视| 亚洲欧洲日产国码无码av喷潮| 亚洲天堂视频在线播放|