sqlite之增删改查--简单的实现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;

ottom:0px; font-family:Menlo; color:rgb(195,retain)Nsstring *topic_title;

ottom:0px; font-family:Menlo; color:rgb(195,retain)Nsstring *topic_name;

ottom:0px; font-family:Menlo; color:rgb(195,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);

}

+ (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,NULL);

}

+ (void)remove:(TopicDB *)mymodel

{

[self open];

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

sqlite3_exec(dbPoint,NULL);

}

+ (void)update

{

[self create];

Nsstring *sql = @"update travel_Topic set name = '汲国兴250' where number = '250'";

sqlite3_exec(dbPoint,NULL);

}

+ (NSArray *)select

{

[self open];

//创建数据库替身

sqlite3_stmt *stmt = nil;

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

//执行语句

int result = sqlite3_prepare_v2(dbPoint,-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,0);

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类里)
如下:

-(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:@"已收藏

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能