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;
}
相关推荐
笨小孩@GF 知行合一7 小时前
易语言-高级应用
数据库·编程·易语言·中文编程
KaiwuDB8 小时前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
夜雪一千9 小时前
MySQL外键彻底入门:是什么、怎么用、什么时候不该用
数据库·mysql
qq_334466869 小时前
删除SSMS的历史登录记录
数据库·sql
zl_dfq10 小时前
Redis 之 【常见面试题总结】(从数据类型到高可用、缓存一致性全解析)
数据库·redis
龙亘川10 小时前
铭记英烈守初心,数字强基促服务:亘川智城退役军人服务系统的实践与价值
java·数据库·人工智能
kv11010 小时前
Android studio国内开发有关
java·数据库·android studio
哭泣方源炼蛊11 小时前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
余槐i11 小时前
EXPLAIN 显示走了索引查询仍慢:回表与选择性在 500 万行表上拉开 10 倍耗时
数据库·postgresql·性能优化·vacuum·explain