封装数据库查询学生信息(的增删查改)的方法
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;
}
//查询所有学生
+ (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;
}
相关文章推荐
- 数据库 查询方法详解 以学生老师信息表为例
- 怎样在JAVA 中封装数据库操作(增删改查)运用反射机制!已贴出删除和查询方法,求增加和修改!
- 新生管理系统,加入了数据库后永久保存(只是学生的增删改查方法)
- 例题:学习数据库查询。学生信息表的创建,主外键关系,以及45道题的查询实例。主要知识点在讲页45页,和讲页65页
- 封装数据库查询方法
- 关于数据库” 查询选修所有课的学生信息“ exists解法的理解
- 2016/3/27 ①连接数据库方法的封装 ②连接数据库 制表 网页查询 奥迪
- Java学生信息增删改查(并没用数据库)
- 玩转SSH--Hibernate(三)---手动修改数据库,前台查询信息不同步更新问题解决方法
- 基于 iOS SQLite 增删改查基本方法的封装---通用式数据库访问类
- 分页查询+万能---数据库例题的学生老师信息表为前提
- iOS基础教程-SQLite数据库操作(二简单实例学生信息增删改查数据库操作)
- JDBC连接数据库(适当的封装查询、新增修改删除)的方法
- 编写程序,用if else语句根据姓名查询teaching数据库中学生的基本信息和选课信息,学生姓名通过变量输入。不存在则输出提示信息
- JDBC连接数据库(适当的封装查询、新增修改删除)的方法改进
- 第十三章 带参方法 模拟学生信息登记,实现查询,录入,修改学生信息
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- java根据表主键查询表信息的方法封装
- sql server实现在多个数据库间快速查询某个表信息的方法
- 数据库已更新,前台查询信息不同步更新问题解决方法