您的位置:首页 > 数据库

数据库封装

2015-12-01 20:57 309 查看
#import <Foundation/Foundation.h>

#import "Student.h"

#import <sqlite3.h>

@interface SqliteManager : NSObject

{

sqlite3 *db;

}

-(void) open;

-(void) insertStudent:(Student *) s;

-(void) updateStudent:(Student *) s;

-(void) deleteStudent:(Student *) s;

-(NSArray *) searchStudent:(Student *) s;

-(void) close;

@end

#import "SqliteManager.h"

@implementation SqliteManager

-(void) open;

{

NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/student.sqlite"];

//打开数据库文件 第一个参数代表数据库文件的路径,注意需要调用UTF8String方法将NSString转换成c的字符串格式,第二个参数代表数据库对象。该方法如果返回0,代表数据库打开成功,如果该路径没有数据库文件,则先创建再打开,否则直接打开

int a = sqlite3_open([path UTF8String], &db);

if (a == 0) {

[self createTable];

}

}

//创建数据库表

-(void) createTable

{

NSString *s = @"create table if not exists Student(name TEXT)";

[self execSql:s ];

}

-(void)execSql :(NSString *) str

{

sqlite3_exec(db, [str UTF8String], NULL, NULL, NULL);

}

-(void) insertStudent:(Student *) s

{

//数据库增加数据

//sql插入语句:insert into Student(表名) (要进行保存的字段名,名字之间用逗号隔开) values(要保存的实际数据,多个数据用逗号隔开,注意:此处数据要与前面的字段名保持一致,且如果是TEXT类型,需要用单引号引起来)

NSString *sql = [NSStringstringWithFormat:@"insert into Student (name) values('%@')",s.name];

[self execSql:sql];

}

//搜索

-(NSArray *) searchStudent:(Student *) s

{

NSMutableArray *arr = [NSMutableArrayarray];

NSString *sql = nil;

if ([SqliteManager isBlankString:s]) {

sql = @"select * from Student";

}else{

sql = [NSStringstringWithFormat: @"select * from Student where name = '%@'",s];

}

sqlite3_stmt *_stmt = nil;

int res = sqlite3_prepare(db, [sql UTF8String], -1, &_stmt, NULL);

if (res == 0) {

while (SQLITE_ROW == sqlite3_step(_stmt)) {

const unsigned char *name = sqlite3_column_text(_stmt, 0);

Student *s = [[Student alloc] init];

s.name = [NSString stringWithUTF8String:(const char *)name];

[arr addObject:s];

}

}

return arr;

}

+ (BOOL)isBlankString:(NSString *)string{

if (string == nil) {

return YES;

}

if (string == NULL) {

return YES;

}

if ([string isKindOfClass:[NSNull class]]) {

return YES;

}

if (string.length == 0) {

return YES;

}

returnNO;

}

-(void) close

{

sqlite3_close(db);

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: