在笔记(1)中记录了安装,创建工程,open,create,insert以及批处理一些基本的方法。但忘记说明最重要的select怎么实现的了。本文主要记录一下select的实现方式。
首先我打开之前创建的表students,里面内容有:(当时为了方便,全定义成varchar了)
id: 00001, name: SUE, sex: FAMALE, age: 10
id: 00002, name: SANDY, sex: MALE, age: 11
id: 00003, name: TOMMY, sex: MALE, age: 11
id: 00004, name: SALLY, sex: FAMALE, age: 13
id: 00005, name: SODA, sex: MALE, age: 8
id: 00006, name: MARY, sex: FAMALE, age: 14
void select_table()
{ //初始化
sqlite3 *db = NULL;
char *error_msg = NULL;
int rc = sqlite3_open("test.db", &db);
if (rc)
printf("SQL error: %s \n", sqlite3_errmsg(db));
else
printf("db is opened \n");
// select
sqlite3_stmt *stmt;
sqlite3_prepare(db, "select * from Students;", -1, &stmt, 0);
int n_column = sqlite3_column_count(stmt); // 可以获取查询结果有多少列,当然也可以默认自己选择的多少列
while (sqlite3_step(stmt) == 100)
// 100==SQLITE_ROWSQLITE_ROW,表示有数据,每step一次读一行
{
const unsigned char* id = sqlite3_column_text(stmt, 0);
const unsigned char* name = sqlite3_column_text(stmt, 1);
const unsigned char* sex = sqlite3_column_text(stmt, 2);
const unsigned char* age = sqlite3_column_text(stmt, 3);
printf("id: %s, name: %s, sex: %s, age: %s \n", id, name, sex, age);
}
sqlite3_finalize(stmt);
}