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;
}
相关推荐
java_logo14 分钟前
Apache Doris Docker 部署指南:实时分析数据库实战
数据库·docker·apache·doris·apache doris·轩辕镜像·docker部署doris
广州灵眸科技有限公司8 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手10 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学11 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh12 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898613 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD13 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo14 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
Ai_easygo14 小时前
MCP 协议实战:用 Claude Desktop 连本地 SQLite,5 分钟搭一个能查数据的 AI 助手
jvm·人工智能·sqlite
TlSfoward14 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php