SQLite3数据库查询学习笔记2

目录

一、查询数据

查询数据基本语句

二、回调函数callback

一、查询数据

查询数据基本语句

  • 查看所有数据: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;
}
相关推荐
oradh7 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
ltl7 小时前
RocksDB 并发 Compaction 与 Rate Limiter
数据库
闻道且行之9 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
夏炳辉.10 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨11 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵11 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶11 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
smilejingwei11 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
意疏12 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开
大数据·前端·数据库
名不经传的养虾人12 小时前
从0到1:企业级AI项目迭代日记 Vol.90|Agent变快了,Judge定下来了
大数据·数据库·人工智能·ai编程·企业ai