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;
}
相关推荐
kiss strong10 分钟前
redis服务器登录(内网环境,无法使用客户端)
数据库·redis·缓存
志栋智能17 分钟前
运维超自动化中的配置管理实践
运维·网络·数据库·自动化
邪修king27 分钟前
MySQL 数据库(三):表级操作实战:增删查改全实例演示 + 企业实操红线规范
android·数据库·mysql
知行产研38 分钟前
煤矿软件杀成红海,龙软科技押注的“时空智能“能接棒吗?
数据库·科技·mysql
2501_9336707941 分钟前
内部审计校招的数据化趋势:SQL、Excel、Power BI和证书选择
数据库·sql·excel
倔强的石头_1 小时前
异构数据同步最难的不是“搬过去”:我如何理解 KFS 的全周期一致性校验
数据库
anxiao_m1 小时前
工业桌面云怎么选?从算力、适配、安全多维度实测对比
数据库·云桌面·云桌面厂家
qq_349447951 小时前
搭建mysql主从数据库
数据库·mysql
白帽黑客-晨哥1 小时前
Copilot 能换成本地吗?本地化 AI 编程助手完全指南
数据库·人工智能·copilot