前言
- 最近一個月是考試月和答辯月碳想,時間很少,博客有兩周沒更新了毁靶。會在近期補上胧奔,請諒解。
- 信息系統(tǒng)開發(fā)中预吆,APP這一塊涉及到了和數(shù)據(jù)庫的交互龙填。但是小組人員都沒有會后臺的,所以我們就決定不適用后臺來讓應(yīng)用直接和數(shù)據(jù)庫連接。PS:應(yīng)用和數(shù)據(jù)庫直接通訊是不推薦的哦~
- IOS APP直接和數(shù)據(jù)庫連接比較麻煩岩遗,如果使用的是SQLite還好扇商,只需要加入
libsqlite3.0.tbd
依賴以及引入sqlite3.h
頭文件即可。但是使用MySQL宿礁,則就比較麻煩案铺。我使用的是一個第三方庫OHMySQL
安裝第三方庫OHMySQL
安裝第三方庫可以直接去github上面下載下來拖入工程中,也可以使用cocoaPods來方便快速的導(dǎo)入第三方庫梆靖。我使用的是cocoaPods控汉,不會使用的同學(xué)自己谷歌一下,挺簡單的返吻。
- 在IOS工程中新建一個podfile文件姑子,輸入以下內(nèi)容:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
target '你的項目名字' do
pod 'OHMySQL'
end
- 新建好podfile文件后,在終端中輸入:
Larry:ConnToSQL Larry$ pod install
- 看到下圖的綠色文字后思喊,代表導(dǎo)入成功壁酬。
導(dǎo)入第三方庫成功提示
使用OHMySQL
- 安裝好第三方庫后,運行
你的項目.xcworkspace
恨课。 - 使用這個庫的大致流程如下:
1.初始化數(shù)據(jù)庫用戶
2.初始化連接器
3.連接到數(shù)據(jù)庫
4.設(shè)置設(shè)備上下文數(shù)據(jù)
5.數(shù)據(jù)交互
// 初始化數(shù)據(jù)庫連接用戶
OHMySQLUser *usr = [[OHMySQLUser alloc] initWithUserName:@"itimes" password:@"iTimessql" serverName:@"114.215.103.67" dbName:@"itimes" port:3306 socket:nil];
// 初始化連接器
OHMySQLStoreCoordinator *coordinator = [[OHMySQLStoreCoordinator alloc] initWithUser:usr];
// 連接到數(shù)據(jù)庫
[coordinator connect];
// 初始化設(shè)備上下文
OHMySQLQueryContext *queryContext = [OHMySQLQueryContext new];
// 設(shè)置連接器
queryContext.storeCoordinator = coordinator;
// 獲取log表中的數(shù)據(jù)
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory SELECT:@"log" condition:nil];
NSError *error = nil;
// task用于存放數(shù)據(jù)庫返回的數(shù)據(jù)
NSArray *tasks = [queryContext executeQueryRequestAndFetchResult:query error:&error];
if (tasks != nil) {
NSLog(@"%@",tasks);
}
數(shù)據(jù)庫操作對應(yīng)語法
- 查找
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory SELECT:@"tasks" condition:nil];
NSError *error = nil;
NSArray *tasks = [queryContext executeQueryRequestAndFetchResult:query error:&error];
- 插入
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory INSERT:@"tasks" set:@{ @"name": @"Something", @"desctiption": @"new task" }];
NSError error;
[queryContext executeQueryRequest:query error:&error];
- 刪除
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory DELETE:@"tasks" condition:@"id=10"];
- 連接,連接有4種(INNER, RIGHT, LEFT, FULL)
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory JOINType:OHJoinInner
fromTable:@"tasks"
columnNames:@[@"id", @"name", @"description"]
joinOn:@{ @"subtasks":@"tasks.id=subtasks.parentId" }];
NSArray *results = [queryContext executeQueryRequestAndFetchResult:query error:nil];
- 具體內(nèi)容請參見:OHMySQL
注意事項
- 查找操作中的
condition
代表篩選操作舆乔,對應(yīng)對sql中的WHERE XXX AND XXX,但是,where是不需要自己加入的剂公,我們看源碼可知希俩,作者會自動加入WHERE。比如我想查找task表中id = 10,名字為larry的字段纲辽,需要這樣輸入:
OHMySQLQueryRequest *query = [OHMySQLQueryRequestFactory SELECT:@"tasks" condition:@"id = ‘10 and name = ’larry‘’"];
最后
- 演示一下我一個自己查詢數(shù)據(jù)庫的操作(只有DEBUG打友瘴洹):
與數(shù)據(jù)庫通訊測試
附上Demo地址:IOS開發(fā)中APP直接與數(shù)據(jù)庫交互Demo
安利一下自己博客地址(第一時間在自己博客更新):Larry代碼成詩