目录
一、查询数据
查询数据基本语句
- 查看所有数据:
SELECT * FROM 表名; - 按条件查询:
SELECT 字段 FROM 表名 WHERE 条件; - 查看表结构:
PRAGMA table_info(表名);
二、回调函数callback
int callback(void *arg, int col, char **value, char **name)
{
// col:列数
// name:字段名数组
// value:数据数组
return 0;
}
代码示例:
cs
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sqlite3.h>
// arg sqlite3_exec 传递过来的参数
// col 结果集列数
// result查询到的结果
// title 标题
// 这个函数的的调用次数,由 结果集决定 。如果结果由10 条,函数就会调用10次。
// result 对指向对应一条记录。
int callback(void *arg, int col, char **result, char **title)
{
*(int*)arg = 1;
return 0;
}
int main(int argc, char **argv)
{
sqlite3 *db = NULL;
// 1 打开数据库,获得数据的句柄(相当于linux 中的文件描述符)
int ret = sqlite3_open("aaa.db", &db);
if (SQLITE_OK != ret)
{
fprintf(stderr, "open db error %s\n", sqlite3_errstr(ret));
sqlite3_close(db);
return 1;
}
char username[50] = {0};
char passwd[50] = {0};
printf("user name:");
fgets(username, sizeof(username), stdin);
username[strlen(username) - 1] = '\0';
printf("passwd:");
fgets(passwd, sizeof(passwd), stdin);
passwd[strlen(passwd) - 1] = '\0';
int num = atoi(passwd);
char *errmsg = NULL;
char sql_cmd[512] = {0};
int flag = 0; // 判断用户的账号和秘密是否正确的标志位
sprintf(sql_cmd,"select * from user where name like '%s' and age = %d;",username,num);
// 2 执行sql语句(对数据库的读写)
ret = sqlite3_exec(db, sql_cmd, callback, &flag, &errmsg);
if (SQLITE_OK != ret)
{
fprintf(stderr, "sqlite3_exec sql_cmd:[%s] ,%s\n", sql_cmd, errmsg);
sqlite3_free(errmsg);
sqlite3_close(db);
return 1;
}
if(0 == flag)
{
printf("userpasswd name ,error\n");
}
else
{
printf("userpaswd name correct\n");
}
// 3. 关闭数据 释放资源
sqlite3_close(db);
return 0;
}