您的位置:首页 > 数据库

封装数据库查询学生信息(的增删查改)的方法

2014-09-19 20:16 246 查看
紧接上一篇的文章内容(调用其打开和关闭数据库的方法)

//查询所有学生

+ (NSMutableArray *)getAllStudents;

//查询单个学生

+ (Student *)getStudentWithID:(NSInteger)aID;

//添加一个学生

+ (BOOL)insertStudent:(Student *)aStudent;

//修改一个学生Name

+ (BOOL)updateStudentWithName:(NSString *)aName byID:(NSInteger)aID;

//删除一个学生

+ (BOOL)deleteStudentWithID:(NSInteger)aID;

.m文件

//查询所有学生

+ (NSMutableArray *)getAllStudents

{

sqlite3 *db = [DataBase openDB];//打开数据库

//数据库的操作指针,stmt:statement

sqlite3_stmt *stmt = nil;

//验证SQL语句的正确性

//参数1:数据库指针,参数2:SQL语句,参数3:SQL语句的长度(-1自动匹配长度,代表无限长),参数4:返回数据库操作指针,参数5:未来做准备.预留参数;一般写成NULL

int result = sqlite3_prepare_v2(db, "select * from Student", -1, &stmt, NULL);

NSMutableArray *studentArray = [NSMutableArray array];

//判断SQL语句执行的结果(是否执行)

if (result == SQLITE_OK) {

while (sqlite3_step(stmt) == SQLITE_ROW)//存在一行数据

{

int ID = sqlite3_column_int(stmt, 0);//列数从0开始

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

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

int age = sqlite3_column_int(stmt, 3);

//blob类型的获取

//1:获取长度

int length = sqlite3_column_bytes(stmt, 4);

//2:获取数据

const void *photo = sqlite3_column_blob(stmt, 4);

//3:转成NSData

NSData *photoData = [NSData dataWithBytes:photo length:length];

//4:转成UIImage

UIImage *image = [UIImage imageWithData:photoData];

//封装student模型

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

student.ID = ID;

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

student.sex = [NSString stringWithUTF8String:(const char *)sex];

student.age = age;

student.photo = image;

//添加到数组中

[studentArray addObject:student];

}

}

//释放stmt指针

sqlite3_finalize(stmt);

//close数据库

[DataBase closeDB];

return studentArray;

}

//查询单个学生

+ (Student *)getStudentWithID:(NSInteger)aID

{

sqlite3 *db = [DataBase openDB];

sqlite3_stmt *stmt = nil;

NSString *sqlString = [NSString stringWithFormat:@"select * from Student where id = %d",aID];

int result = sqlite3_prepare_v2(db, [sqlString UTF8String], -1, &stmt, NULL);

Student *student = nil;

if (result == SQLITE_OK) {

if (sqlite3_step(stmt) == SQLITE_ROW) {

int ID = sqlite3_column_int(stmt, 0);

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

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

int age = sqlite3_column_int(stmt, 3);

int length = sqlite3_column_bytes(stmt, 4);

const void *photo = sqlite3_column_blob(stmt, 4);

NSData *photoData = [NSData dataWithBytes:photo length:length];

UIImage *image = [UIImage imageWithData:photoData];

student = [[Student alloc] init];

student.ID = ID;

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

student.sex = [NSString stringWithUTF8String:(const char *)sex];

student.age = age;

student.photo = image;

}

}

sqlite3_finalize(stmt);

[DataBase closeDB];

return student;

}

//添加一个学生

+ (BOOL)insertStudent:(Student *)aStudent

{

sqlite3 *db =[DataBase openDB];

sqlite3_stmt *stmt = nil;

NSString *sqlString = [NSString stringWithFormat:@"insert into Student (name, sex, age)values('%@','%@',%d)",aStudent.name,aStudent.sex,aStudent.age];

int result = sqlite3_prepare_v2(db, [sqlString UTF8String], -1, &stmt, nil);

if (result == SQLITE_OK) {

if (sqlite3_step(stmt) == SQLITE_DONE)//判断语句是否执行完毕

{

sqlite3_finalize(stmt);

[DataBase closeDB];

return YES;

}

}

sqlite3_finalize(stmt);

[DataBase closeDB];

return NO;

}

//修改一个学生Name

+ (BOOL)updateStudentWithName:(NSString *)aName byID:(NSInteger)aID

{

sqlite3 *db = [DataBase openDB];

sqlite3_stmt *stmt = nil;

NSString *sqlString = [NSString stringWithFormat:@"update Student set name ='%@' where id = %d",aName,aID];

int result = sqlite3_prepare_v2(db, [sqlString UTF8String], -1, &stmt, NULL);

if (result == SQLITE_OK) {

if (sqlite3_step(stmt) == SQLITE_DONE) {

sqlite3_finalize(stmt);

[DataBase closeDB];

return YES;

}

}

sqlite3_finalize(stmt);

[DataBase closeDB];

return NO;

}

//删除一个学生

+ (BOOL)deleteStudentWithID:(NSInteger)aID

{

sqlite3 *db = [DataBase openDB];

sqlite3_stmt *stmt = nil;

NSString *sqlString = [NSString stringWithFormat:@"delete from Student where id = %d",aID];

int result = sqlite3_prepare_v2(db, [sqlString UTF8String], -1, &stmt, NULL);

if (result == SQLITE_OK) {

if (sqlite3_step(stmt) == SQLITE_DONE) {

sqlite3_finalize(stmt);

[DataBase closeDB];

return YES;

}

}

sqlite3_finalize(stmt);

[DataBase closeDB];

return NO;

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