IOS sqlite数据库增删改查
生活随笔
收集整理的這篇文章主要介紹了
IOS sqlite数据库增删改查
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.簡介
簡單封裝sqlite數(shù)據(jù)庫操作類 BaseDB 用于完成對sqlite的增刪改查,使用前先導入libsqlite3.0.dylib庫2.BaseDB.h
// // BaseDB.h // SqliteDemo // // Created by 趙超 on 14-8-26. // Copyright (c) 2014年 趙超. All rights reserved. //#import <Foundation/Foundation.h> #import "sqlite3.h"@interface BaseDB : NSObject/*** 創(chuàng)建一個表* sql:執(zhí)行的SQL語句* dataName:數(shù)據(jù)庫名稱*/-(void) createTable:(NSString*)sql dataBaseName:(NSString*) dataName; /*** 執(zhí)行SQL語句,主要完成增加、修改、刪除* sql:執(zhí)行的SQL語句* params:SQL語句中的參數(shù)* dataName:數(shù)據(jù)庫名稱*/ -(BOOL) execSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName; /*** 選擇數(shù)據(jù)* sql:查詢的SQL語句* params:查詢SQL語句中的參數(shù)* dataName:查詢數(shù)據(jù)庫名稱*/-(NSMutableArray*) selectSql:(NSString*)sql parmas:(NSArray*) params dataBaseName:(NSString*)dataName;@end 創(chuàng)建的數(shù)據(jù)庫文件位于?/Users/zhaochao/Library/Application Support/iPhone Simulator/7.1/Applications/07D17328-B63C-4D87-9B6C-03AA5CD681EA/Documents/zhaochao.sqlite, 就是?NSString *fileName=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",name]; 這個目錄。文件可以直接用SQLiteManager軟件打開,也可以在firefox瀏覽器中安裝sqlitemanager插件打開,如下圖3.BaseDB.m
// // BaseDB.m // SqliteDemo // // Created by 趙超 on 14-8-26. // Copyright (c) 2014年 趙超. All rights reserved. //#import "BaseDB.h" @implementation BaseDB/** 獲取沙盒目錄* name:追加的目錄aa**/ -(NSString*) DataBaseName:(NSString *) name {NSString *fileName=[NSHomeDirectory() stringByAppendingFormat:@"/Documents/%@",name];return fileName; } /*** 選擇數(shù)據(jù)* sql:查詢的SQL語句* params:查詢SQL語句中的參數(shù)* dataName:查詢數(shù)據(jù)庫名稱*/-(NSMutableArray*) selectSql:(NSString *)sql parmas:(NSArray *)params dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;sqlite3_stmt *stmt=nil;//打開數(shù)據(jù)庫NSString *fileName=[self DataBaseName:dataName];int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打開失敗");return nil;}const char* sqlCh=[sql UTF8String];//編譯SQL語句sqlite3_prepare_v2(sqlite, sqlCh, -1, &stmt, NULL);//綁定參數(shù)for (int i=0; i<params.count; i++) {NSString *param=[params objectAtIndex:i];sqlite3_bind_text(stmt, i+1, [param UTF8String], -1, NULL);}//執(zhí)行查詢語句result=sqlite3_step(stmt);NSMutableArray *resultData=[NSMutableArray array];//遍歷結果while (result==SQLITE_ROW) {NSMutableDictionary *resultRow=[NSMutableDictionary dictionary];//獲取字段個數(shù)int col_count = sqlite3_column_count(stmt);for (int i=0; i<col_count; i++) {//獲取字段名稱const char*columName=sqlite3_column_name(stmt,i);//獲取字段值char* columValue=(char*) sqlite3_column_text(stmt, i);NSString *columkeyStr=[NSString stringWithCString:columName encoding:NSUTF8StringEncoding];NSString *columValueStr=[NSString stringWithCString:columValue encoding:NSUTF8StringEncoding];[resultRow setObject:columValueStr forKey:columkeyStr];}[resultData addObject:resultRow];result=sqlite3_step(stmt);}//關閉數(shù)據(jù)庫句柄sqlite3_finalize(stmt);//關閉數(shù)據(jù)庫sqlite3_close(sqlite);NSLog(@"查詢完!");return resultData; } /*** 執(zhí)行SQL語句,主要完成增加、修改、刪除* sql:執(zhí)行的SQL語句* params:SQL語句中的參數(shù)* dataName:數(shù)據(jù)庫名稱*/-(BOOL) execSql:(NSString *)sql parmas:(NSArray *)params dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;sqlite3_stmt *stmt=nil;//打開數(shù)據(jù)庫NSString *fileName=[self DataBaseName:dataName];int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打開失敗");return NO;}const char* sqlCh=[sql UTF8String];//編譯SQL語句sqlite3_prepare_v2(sqlite, sqlCh, -1, &stmt, NULL);//綁定參數(shù)for (int i=0; i<params.count; i++) {NSString *parm=[params objectAtIndex:i];sqlite3_bind_text(stmt, i+1, [parm UTF8String], -1, NULL);}//執(zhí)行SQLresult=sqlite3_step(stmt);if (result==SQLITE_ERROR || result==SQLITE_MISUSE) {NSLog(@"執(zhí)行SQL語句失敗");sqlite3_close(sqlite);return NO;}//關閉數(shù)據(jù)庫句柄sqlite3_finalize(stmt);//關閉數(shù)據(jù)庫sqlite3_close(sqlite);NSLog(@"執(zhí)行成功!");return YES; }/*** 創(chuàng)建一個表* sql:執(zhí)行的SQL語句* dataName:數(shù)據(jù)庫名稱*/ -(void)createTable:(NSString *)sql dataBaseName:(NSString *)dataName{sqlite3 *sqlite=nil;NSString *fileName=[self DataBaseName:dataName];//打開數(shù)據(jù)庫int result= sqlite3_open([fileName UTF8String], &sqlite);if (result!=SQLITE_OK) {NSLog(@"打開失敗");}else{const char* sqlCh=[sql UTF8String];char* error;//執(zhí)行SQLint result=sqlite3_exec(sqlite, sqlCh, NULL, NULL, &error);if (result!=SQLITE_OK) {NSLog(@"創(chuàng)建失敗");NSLog(@"%s",error);sqlite3_close(sqlite);return ;}//關閉數(shù)據(jù)庫sqlite3_close(sqlite);NSLog(@"創(chuàng)建成功");}}@end4.調(diào)用格式
BaseDB *db=[[BaseDB alloc] init];//創(chuàng)建表NSString *dbCreate=@"create table zhaochao( username text primary key,userPasswd test)";NSString *dbName=@"zhaochao.sqlite";// [db createTable:dbCreate dataBaseName:dbName];//添加數(shù)據(jù)NSString *insertTable=@"insert into zhaochao (username,userPasswd) values (?,?)";NSArray *insertParmas=@[@"acasdfaa",@"bb"];// [db execSql:insertTable parmas:insertParmas dataBaseName:@"zhaochao.sqlite"];//修改數(shù)據(jù)NSString *updateTable=@"update zhaochao set username=? where username=?";NSArray *updateParams=@[@"admin",@"zhaochao"];// [db execSql:updateTable parmas:updateParams dataBaseName:@"zhaochao.sqlite"];//刪除數(shù)據(jù)NSString *deleteTable=@"delete from zhaochao where username=?";NSArray *deleteParams=@[@"aa"];// [db execSql:deleteTable parmas:deleteParams dataBaseName:@"zhaochao.sqlite"];//查詢數(shù)據(jù)NSString *selectTable=@"select username,userPasswd from zhaochao where userPasswd=?";NSString *selectParam=@[@"bb"];NSArray *result=[db selectSql:selectTable parmas:selectParam dataBaseName:@"zhaochao.sqlite"];for (int i=0; i<result.count; i++) {NSMutableDictionary *arr=[result objectAtIndex:i];NSLog(@"%@",arr);}轉(zhuǎn)載于:https://www.cnblogs.com/whzhaochao/p/5023435.html
總結
以上是生活随笔為你收集整理的IOS sqlite数据库增删改查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 继承ListView实
- 下一篇: 跨域SSO的实现