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.

主站蜘蛛池模板: 国产特级毛片| 亚洲色图另类| 国产白浆在线观看| 午夜精品影院| 91亚洲视频下载| 亚洲水蜜桃久久综合网站| 国模在线视频一区二区三区| 在线观看国产精品第一区免费| 欧美日韩在线成人| 久久免费看片| 欧美成人午夜影院| 色老头综合网| av色爱 天堂网| 亚洲av综合网| 91综合色区亚洲熟妇p| 日韩在线欧美在线| 久久精品丝袜| 国产精品视频免费网站| 一级毛片免费播放视频| 久久国产拍爱| 国产成人亚洲毛片| 青青草a国产免费观看| 一本色道久久88| 色综合五月| 日本免费高清一区| 91视频区| 91九色视频网| 国产精品刺激对白在线| 91精品国产自产在线老师啪l| 九色综合视频网| 宅男噜噜噜66国产在线观看| 亚洲欧美在线综合图区| 欧美一级高清片欧美国产欧美| 久久精品无码国产一区二区三区| 久久青草精品一区二区三区| 亚洲中久无码永久在线观看软件| 欧美亚洲国产日韩电影在线| 免费国产小视频在线观看| 九色在线观看视频| 国产人免费人成免费视频| 人妻无码中文字幕第一区| 在线观看国产小视频| 一级毛片在线播放| 欧美一级夜夜爽| 91综合色区亚洲熟妇p| 国产一级无码不卡视频| 色偷偷一区| 不卡的在线视频免费观看| 免费一级毛片在线观看| 久久久久免费精品国产| 久久人与动人物A级毛片| 免费观看成人久久网免费观看| 亚洲午夜国产片在线观看| 国产精品原创不卡在线| 中国一级毛片免费观看| 国产精品女主播| 久久精品这里只有精99品| 性69交片免费看| 综合色亚洲| 特级做a爰片毛片免费69| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 欧亚日韩Av| 成人综合在线观看| vvvv98国产成人综合青青| 在线国产资源| 91亚洲精选| 久久久久夜色精品波多野结衣| 2020亚洲精品无码| 国产91视频免费观看| 青青操国产| 亚洲欧洲日韩国产综合在线二区| 亚洲黄色视频在线观看一区| 亚洲中字无码AV电影在线观看| 东京热高清无码精品| 亚洲美女视频一区| 免费在线看黄网址| 成人一级免费视频| 日韩在线1| 国产在线拍偷自揄拍精品| 亚洲美女一级毛片| av性天堂网| 久久a毛片|