10. 代码实现DQL查询语句
2016-06-16 本文已影响26人
面糊
- 查询语句与之前的几个语句相比较, 是最麻烦的, 因为他要取出每一条数据, 去匹配他的类型, 然后再取出来
-
本人只尝试了查询所有数据的方法
-
这里需要注意的是, 匹配数据的时候, 一定要注意字符串的转换, 因为这玩意是纯C语言的东西.....对于一个iOS开发者来说, C真心薄弱的可以....
-
如果你的数据过多, 建议不要尝试这个方法......因为你遍历的时候基本可以去睡一觉了.....
// 查询所有数据 - (void)queryAll { // 1. 语句 NSString *sql = @"select * from T_human"; // 2. 创建一个准备语句 sqlite3 *db = [SQLiteTool shareInstance].db; sqlite3_stmt *stmt = nil; if (sqlite3_prepare_v2(db, sql.UTF8String, -1, &stmt, nil) != SQLITE_OK) { NSLog(@"编译失败"); return; } // 3. 绑定参数的步骤可以省略 // 4. 执行 while (sqlite3_step(stmt) == SQLITE_ROW) { // 每遍历一次, 都是取出一行数据出来 // 4.1 确定列数 NSUInteger count = sqlite3_column_count(stmt); // 4.2 遍历所有的列 for (int i = 0; i < count; i++) { // 4.3 取出列名 NSString *columnName = [NSString stringWithUTF8String:sqlite3_column_name(stmt, i)]; NSLog(@"columnName = %@", columnName); // 4.4 取出这一列对应的值 int type = sqlite3_column_type(stmt, i); // 4.5 根据不同的类型, 使用不同的函数, 取出不同的值 if (type == SQLITE_INTEGER) { // 取出年龄 int age = sqlite3_column_int(stmt, i); NSLog(@"age = %i", age); } if (type == SQLITE_FLOAT) { // 取出身高 float height = sqlite3_column_double(stmt, i); NSLog(@"height = %f", height); } if (type == SQLITE_TEXT) { // 取出姓名 NSString *name = [NSString stringWithCString:(char *)sqlite3_column_text(stmt, i) encoding:NSUTF8StringEncoding]; NSLog(@"nage = %@", name); } } } // 5. 重置准备语句可以省略 // 6. 释放资源 sqlite3_finalize(stmt); }
-