iOS -- SQLite 實現 收藏功能

iOS -- SQLite 實現 收藏功能


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

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

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

在model類的.h文件中聲明需要收藏的字符串

在DataBaseManager.h文件中,聲明方法:

+(void)open; // 打開數據庫

+ (void)close; // 關閉數據庫

+(void)create;  // 創建表

+ (void)insert:(Model*)model;   // 插入模型數據

+ (void)remove:(Model*)model;  // 刪除模型數據

+ (void)update;   // 修改模型數據

+ (NSArray *)select;  // 查詢模型數據

在DataBaseManager.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:(Model*)model

{

[self open];

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

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

}

+ (void)remove:(Model*)model

{

[self open];

NSString *sql = [NSString stringWithFormat:@"delete from travel_Topic where title = '%@'",model.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

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

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

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

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

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

[arr addObject:model];

}

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

return arr;

}

sqlite3_finalize(stmt);

return [NSMutableArray array];

}

3.在所需的頁面創建一個收藏按鈕,編寫一個點擊事件的方法(將相應的信息存到model類裏)

如下:

-(void)collectionButton

{

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

[DataBaseManager create];

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

Model*model = [[Model 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:@"已收藏

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章