sqlite之增刪改查實例 - 實現簡單的iOS收藏夾功能

cmn6 9年前發布 | 8K 次閱讀 Objective-C IOS

使用sqlite可以實現簡單的收藏夾功能,不多說直接上代碼。

1.首先導入libsqlite3.0.dylib,libz.dylib兩個類庫

2.封裝一個NSObject類型的類去管理 (即寫sql語句)

在這個類里首先導入一個頭文件和你建好的model類 (實現收藏本質是存model類)



model類只是建立需要的字符串(我只寫了.h .m里什么都沒寫)

#import <Foundation/Foundation.h>


@interface TopicDB : NSObject

@property(nonatomic, retain)NSString *topic_id;

@property(nonatomic, retain)NSString *topic_title;

@property(nonatomic, retain)NSString *topic_name;

@property(nonatomic, retain)NSString *topic_image;

@end




真正的部分是封裝的這個管理類:
.h里聲明相應方法,導入相應頭文件

#import <sqlite3.h>

#import "TopicDB.h"//我的那個model類

//創建、關閉數據庫以及增刪改查

+(void)open;

+ (void)close;

+(void)create;

+ (void)insert:(TopicDB *)mymodel;

+ (void)remove:(TopicDB *)mymodel;

+ (void)update;

+ (NSArray *)select;


.m里把這幾個方法實現(直接上代碼)

#import "DataBaseManager.h"

static sqlite3 *dbPoint = nil;

@implementation DataBaseManager

+ (void)open

{

    if (dbPoint) {

        return;

    }

    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];

    path = [path stringByAppendingPathComponent:@"travel_Topic.rdb"];

    NSLog(@"%@", path);

    int result = sqlite3_open(path.UTF8String, &dbPoint);

    if (result == SQLITE_OK) {

        NSLog(@"數據庫打開成功");

    }

}

+ (void)close

{

    sqlite3_close(dbPoint);

}

+ (void)create

{

    [self open];

    NSString *sql = @"create table travel_Topic (title text, name text, image text, id text)";

    sqlite3_exec(dbPoint, sql.UTF8String, NULL, NULL, NULL);

}

+ (void)insert:(TopicDB *)mymodel

{

    [self open];

    NSString *sql = [NSString stringWithFormat:@"insert into travel_Topic values ('%@','%@','%@','%@')", mymodel.topic_title ,mymodel.topic_name, mymodel.topic_image, mymodel.topic_id];

    sqlite3_exec(dbPoint, sql.UTF8String, NULL, NULL, NULL);

}

+ (void)remove:(TopicDB *)mymodel

{

    [self open];

    NSString *sql = [NSString stringWithFormat:@"delete from travel_Topic where title = '%@'",mymodel.topic_title];

    sqlite3_exec(dbPoint, sql.UTF8String, NULL, NULL, NULL);

}

+ (void)update

{

    [self create];

    NSString *sql = @"update travel_Topic set name = '汲國興250' where number = '250'";

    sqlite3_exec(dbPoint, sql.UTF8String, NULL, NULL, NULL);

    

}

+ (NSArray *)select

{

    [self open];

    //創建數據庫替身

    sqlite3_stmt *stmt = nil;

    NSString *sql = @"select * from travel_Topic";

    //執行語句

    int result = sqlite3_prepare_v2(dbPoint, sql.UTF8String, -1, &stmt, NULL);

    //判斷是否成功

    if (result == SQLITE_OK) {

        //創建數組用來保存查詢的數據

        NSMutableArray *arr = [NSMutableArray array];

        //如果還有下一行

        while (sqlite3_step(stmt) == SQLITE_ROW) {

            //獲取數據

            const unsigned char * topic_title = sqlite3_column_text(stmt, );

            const unsigned char * topic_name = sqlite3_column_text(stmt, 1);

            const unsigned char * topic_image = sqlite3_column_text(stmt, 2);

            const unsigned char * topic_id = sqlite3_column_text(stmt, 3);

            //封裝成model

            TopicDB *mymodel = [[TopicDB alloc] init];

            mymodel.topic_title = [NSString stringWithUTF8String:(const char *) topic_title];

            mymodel.topic_name = [NSString stringWithUTF8String:(const char *) topic_name];

            mymodel.topic_image = [NSString stringWithUTF8String:(const char *) topic_image];

            mymodel.topic_id = [NSString stringWithUTF8String:(const char *) topic_id];  

            [arr addObject:mymodel];

        }

        sqlite3_finalize(stmt);   //釋放數據庫替身

        return arr;

    }

    sqlite3_finalize(stmt);

    return [NSMutableArray array];

}

3.在所需的頁面(標簽4中的詳情頁)創建一個收藏按鈕,編寫一個點擊事件的方法(將相應的信息存到model類里) </div>

如下:

-(void)collectionButton

{

    //創建數據庫  數據庫內同一個表不會疊加 所以放心建。

    [DataBaseManager create];

    //初始化model類存所需數據

    TopicDB *model = [[TopicDB alloc]init];

    model.topic_title = _str2;

    model.topic_name = _str1;

    model.topic_image = _str;

    model.topic_id  = [NSString stringWithFormat:@"%lu", _Travel_Topic_Sub_Id];

    //alert提示框

    _alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"已收藏

 本文由用戶 cmn6 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!