加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

7. --SQLite 专属的整体查找

发布时间:2020-12-12 19:38:20 所属栏目:百科 来源:网络整理
导读:比较麻烦。 // 查询 又体现了多态:父类指针可以指向子类对象。在我们增加的时候,是一个可变数组,所以内部定义一个可变的数组,但是返回的却是不可变数组。 -( NSArray *)selectAllStudents { NSMutableArray *mutableArray = nil ; // 伴随指针 sqlite3_s

比较麻烦。


//查询 又体现了多态:父类指针可以指向子类对象。在我们增加的时候,是一个可变数组,所以内部定义一个可变的数组,但是返回的却是不可变数组。

-(NSArray *)selectAllStudents

{

NSMutableArray *mutableArray = nil;

//伴随指针

sqlite3_stmt *stmt = nil;

//查询语句

NSString *selectSQL = [NSString stringWithFormat:@"SELECT * FROM 'student'"];

//准备执行

//db 当前数据库

//selectSQL.UTF8String 执行语句

//-1 最大值

int result = sqlite3_prepare(db,selectSQL.UTF8String,-1,&stmt,NULL);

if (SQLITE_OK == result) {

//当上面的准备查询成功后才开始为数组分配内存---保证内存的有效性

mutableArray = [[NSMutableArray alloc]initWithCapacity:15];

//伴随指针是否指向当前行

while (SQLITE_ROW == sqlite3_step(stmt)) {

Student *student = [Student new];

//number NSInteger类型,后面返回的是int类型

//OC中的NSInteger只是int的别名,只不过OC中的NSInteger是根据机子是X32还是X64来分配的。

//也就是说NSInteger的存储大小事不确定的,得看是x32还是x64

//typedef long NSInteger;

student.number = sqlite3_column_int(stmt, 0);

//根据字段查询的字符串需要强转为 const char * 类型后,再转化成OC字符串

student.name = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt,1)];

student.age = sqlite3_column_int(stmt, 2);

student.gender = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt,3)];

[mutableArray addObject:student];

}

for (Student *stu in mutableArray) {

NSLog(@"学生:%@",stu);

}

}

else

{

NSLog(@" 查询失败");

}

//释放指针

sqlite3_finalize(stmt);

return mutableArray;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读