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

前端之家收集整理的这篇文章主要介绍了7. --SQLite 专属的整体查找前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

比较麻烦。


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

-(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;

}

原文链接:https://www.f2er.com/sqlite/199298.html

猜你在找的Sqlite相关文章