亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        論IOS應(yīng)用開發(fā)中數(shù)據(jù)庫訪問的方式

        2020-09-21 08:38:21劉慶
        科技創(chuàng)新導(dǎo)報 2020年18期

        劉慶

        摘? ?要:移動互聯(lián)網(wǎng)的發(fā)展成為當(dāng)下越來越熱門的話題,各類移動APP應(yīng)用隨著中國經(jīng)濟飛速發(fā)展而快速增長。移動APP應(yīng)用離不開數(shù)據(jù)的存儲,在IOS開發(fā)中,數(shù)據(jù)存儲可以使用文件或數(shù)據(jù)庫的方式。而一般的歸檔、plist文件、偏好設(shè)置都是存儲為文件。本文主要論述了在IOS平臺下,基于XCODE集成開發(fā)環(huán)境,Objective-c編程語言中,IOS應(yīng)用開發(fā)中本地和遠程數(shù)據(jù)庫訪問的方式和步驟,詳細描述了SQLite關(guān)系關(guān)系型數(shù)據(jù)庫的連接、數(shù)據(jù)讀取操作的方法和功能函數(shù)的調(diào)用實現(xiàn)。同時以項目的登陸功能為例,通過對接口文件的使用,實現(xiàn)對于遠程服務(wù)器數(shù)據(jù)庫的訪問與連接。

        關(guān)鍵詞:IOS? 數(shù)據(jù)訪問? APP

        中圖分類號:TP311? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻標識碼:A? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2020)06(c)-0116-02

        1? 引言

        當(dāng)我們在做PC端的應(yīng)用開發(fā)的時候,常見的數(shù)據(jù)庫連接方式有:DAO、ADO、ODBC、JDBC等。通過服務(wù)器端的數(shù)據(jù)支持提供前端的數(shù)據(jù)應(yīng)用,可以根據(jù)數(shù)據(jù)訪問量的大小調(diào)整在線訪問或是離線訪問,可以設(shè)置訪問的并發(fā)性等。但是移動設(shè)備硬件資源有限,移動APP通常會在設(shè)備本地存儲一些數(shù)據(jù),這可以為程序執(zhí)行更良好的性能或離線訪問提供支持。在iOS上,移動APP可以將信息輸出或存儲到Plist文件、SQLite數(shù)據(jù)庫文件中。

        屬性列表(Plist,Property List)是一種結(jié)構(gòu)化的二進制格式文件,包含了內(nèi)嵌鍵值對的可執(zhí)行bundle的基本配置信息。Plist文件主要用于存儲App的用戶設(shè)置及配置信息,例如,游戲類App經(jīng)常會在Plist文件中存儲游戲等級和分數(shù)信息。一般來說,App會將存儲用戶數(shù)據(jù)的Plist文件保存在“[App home目錄]/documents/”目錄下。Plist文件可以是XML格式或二進制格式。

        SQLite是一種自包含、可嵌入、0配置的SQL數(shù)據(jù)庫引擎的跨平臺C庫文件。它的表、觸發(fā)器和視圖整個數(shù)據(jù)庫都包含在一個硬盤文件中。SQLite數(shù)據(jù)庫提供了所有標準的SQL結(jié)構(gòu),包括select、insert、update和delete。APP一般會將其保存在“[App home目錄]/documents/”目錄下。由于SQLite的輕便、穩(wěn)定和小巧,它已成為一個在iOS設(shè)備上存儲數(shù)據(jù)的優(yōu)秀解決方案。

        下面我們將詳細論述,在IOS中移動APP如何實現(xiàn)本地數(shù)據(jù)和遠程數(shù)據(jù)的訪問。

        2? 本地數(shù)據(jù)庫的訪問

        在一些小程序中,需要保存程序運行中的數(shù)據(jù),為了方便處理,在ios中一般會將數(shù)據(jù)庫捆綁在程序中,我們稱之為本地數(shù)據(jù)庫訪問。

        為了更好的描述本地訪問數(shù)據(jù)庫的方式,我們以SQLite提供本地數(shù)據(jù)庫為例,SQLite是一個小型的關(guān)系型數(shù)據(jù)庫。當(dāng)我們在本機創(chuàng)建好了數(shù)據(jù)庫,并把數(shù)據(jù)庫的文件保存為db_file.sqlite3。這時我們將在ios中實現(xiàn)對數(shù)據(jù)的讀寫存儲,首先需要先在Xcode中將libsqlite3.dylib庫文件添加到項目中,然后再將已創(chuàng)建好的db_file.sqlite3數(shù)據(jù)庫文件引入到項目中。

        不管是哪種平臺,對數(shù)據(jù)庫中的數(shù)據(jù)進行操作的方法思路都相似,具體方法步驟如下。

        2.1 連接并打開數(shù)據(jù)庫

        在訪問SQLite數(shù)據(jù)庫文件,需要SQLite庫中相應(yīng)的方法支持,要添加導(dǎo)入語句:#import “sqlite3.h”

        定義一個變量database變量,用來存放數(shù)據(jù)庫連接。

        @property(nonatomic) sqlite3 *database;

        定義方法sqliteDBFilePath,獲取數(shù)據(jù)庫文件的路徑。

        - (NSString *) sqliteDBFilePath

        {

        return[[[NSBundle mainBundle]esourcePath]

        stringByAppendingPathComponent :@" db_file.sqlite3"];

        }

        定義方法initDatabaseConnection,初始化數(shù)據(jù)庫連接,打開連接,并返回數(shù)據(jù)庫連接,存放在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 讀取操作數(shù)據(jù)

        對數(shù)據(jù)表的數(shù)據(jù)進行讀寫,首先定義sql語句,例如從表中讀取出所有的數(shù)據(jù),可以定以定義字符串,然后將該sql語句編譯為sqlite內(nèi)部的一個結(jié)構(gòu)體。

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

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

        調(diào)用sqlite3_step方法執(zhí)行sql語句,將結(jié)果進行相應(yīng)的處理。

        sqlite3_step(fetchBookIndexesStatement)

        2.3 關(guān)閉數(shù)據(jù)庫

        當(dāng)數(shù)據(jù)庫訪問結(jié)束后,及時的關(guān)閉數(shù)據(jù)庫,釋放數(shù)據(jù)庫占用過的資源。

        - (void) closeDatabase

        {

        if (sqlite3_close(database) != SQLITE_OK)

        {

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

        }

        }

        3? 遠程數(shù)據(jù)庫服務(wù)器的訪問

        本地數(shù)據(jù)庫的訪問僅供用戶本機上的數(shù)據(jù)保存與訪問,現(xiàn)在我們更多的是訪問網(wǎng)絡(luò)數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)的共享。一般來講,我們的項目包含前臺和后臺部分。后臺是數(shù)據(jù)庫服務(wù)器,前臺則是我們用戶程序。我們通過前臺的應(yīng)用程序訪問后臺數(shù)據(jù),實現(xiàn)用戶交互、數(shù)據(jù)的共享。用戶程序是如何訪問遠程服務(wù)器中的數(shù)據(jù)?

        3.1 遠程數(shù)據(jù)庫服務(wù)器的接口信息

        首先需知道服務(wù)器的網(wǎng)絡(luò)地址,在此假定服務(wù)器地址為:server:http://182.114.11.2,我們以用戶登錄功能為例。從系統(tǒng)的數(shù)據(jù)庫開發(fā)文檔中,獲取有關(guān)登陸功能需要訪問的數(shù)據(jù)表接口文件。

        接口文件詳細列明了服務(wù)器訪問的地址,訪問時需要給出的參數(shù),訪問后的結(jié)果。

        3.2 連接服務(wù)器

        根據(jù)接口中的類型post定義一個方法,在項目開發(fā)中,定義文件都是分類存儲,對于接口數(shù)據(jù)庫的類,我們單獨定義了一個RequestAPI類,其中的方法主要是用來訪問和連接服務(wù)器。

        + (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 數(shù)據(jù)訪問結(jié)果

        首先定義功能接口url。

        NSString *request = @"/login";

        其次定義接口中的入?yún)?。其中調(diào)用的[Utilities uniqueVendor]是用來獲取手機的設(shè)備號。

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

        調(diào)用RequestAPI類中的postURL方法連接數(shù)據(jù)庫

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

        //判斷連接訪問數(shù)據(jù)庫后的結(jié)果。根據(jù)接口文件中列明的成功返回值為8001

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

        ……

        }

        4? 結(jié)語

        在IOS中常見的數(shù)據(jù)存儲形式有plist格式文件存儲、沙盒存儲、文件存儲、數(shù)據(jù)庫存儲,在本文中,主要描述數(shù)據(jù)庫存儲中的本地和遠程訪問方式,對兩者在數(shù)據(jù)庫連接、數(shù)據(jù)讀寫操作等方法和函數(shù)的調(diào)用,功能的實現(xiàn)進行了描述。

        參考文獻

        [1] 崔璨,王朋嬌,段婷婷.基于iOS系統(tǒng)的MOOC學(xué)習(xí)APP優(yōu)化策略研究[J].軟件導(dǎo)刊,2017,16(9):10-13,18.

        [2] 趙雙久.數(shù)據(jù)庫訪問技術(shù)在VB編程開發(fā)中的應(yīng)用[J].電腦知識與技術(shù),2019,15(31):11-12.

        [3] 段世娟.數(shù)據(jù)庫訪問技術(shù)在VB編程開發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2019(15):120-121.

        [4] 李清平,孟祥芳,宋國順.基于iOS系統(tǒng)的天氣App程序開發(fā)與應(yīng)用[J].軟件工程,2017,20(11):41-43.

        [5] 邱博. 面向iOS平臺的多數(shù)據(jù)庫訪問模式研究[D]. 2014.

        [6] 陳旭. 軟件開發(fā)中數(shù)據(jù)庫設(shè)計理論及設(shè)計方式研究[J]. 信息與電腦, 2016, 361(15):148-149.

        аⅴ资源天堂资源库在线| 九月色婷婷免费| 大陆啪啪福利视频| 精品中文字幕精品中文字幕| 水蜜桃在线观看一区二区| 在线观看老湿视频福利| 国自产偷精品不卡在线| 在线观看av中文字幕不卡| 岛国视频在线无码| 少妇人妻无奈的跪趴翘起| 森中文字幕一区二区三区免费| 精品国产综合区久久久久久| 日本丰满熟妇videossex8k| 欧洲综合色| 国产av无码专区亚洲草草| 久久精品一区二区三区不卡牛牛| 久久精品女人av一区二区| 久久久久88色偷偷| 97久久天天综合色天天综合色hd | 人妻少妇喷水意淫诱惑| 久久精品伊人久久精品伊人| 99re6在线视频精品免费| 国产超碰人人爽人人做人人添| 99香蕉国产精品偷在线观看 | 国产97色在线 | 免| 国产精品一区二区三区不卡| 亚洲精品在线视频一区二区| 人妻少妇偷人精品无码| 日本不卡一区二区三区在线| 日韩精品国产自在欧美| 成人免费毛片立即播放| 亚洲综合成人婷婷五月网址| 亚洲日韩精品无码专区网站| 日韩欧美一区二区三区中文精品| 久久婷婷免费综合色啪| 与漂亮的女邻居少妇好爽| 天天影视性色香欲综合网| 三级国产女主播在线观看| av成人资源在线播放| 久久综合伊人77777麻豆| 国产xxxxx在线观看|