数据库:编程(打开、操作、关闭)

news2024/12/23 8:36:09

一、需要的头文件

sqlite3.h

二、编译过程

gcc xxx -lsqlite3

三、编程框架

打开数据库 ==》读写数据库(增,删,改,查) ==》关闭数据库

3.1 打开数据库: sqlite3_open

int sqlite3_open(char * path,sqlite3 ** db);
    功能:打开指定path路径+文件名称的数据库,并将打开的地址指向db变量的句柄。
    参数:path 要打开的数据库路径+名称
               db  要打开的数据库地址指针
    返回值:成功  0
                  失败  -1;

3.2 关闭数据库: sqlite3_close

int sqlite3_close(sqlite3 *db);
    功能:关闭指定的数据库
    参数:要关闭的数据库地址
    返回值:成功  0
                  失败  -1;

3.3 数据库操作:

查询操作:sqlite3_get_table();  select 
    int sqlite3_get_table(sqlite3 *db,char *sql,char *** result,int *nrow,int *ncol,char ** errmsg);
    功能:在db数据库上执行sql查询语句,并将执行的结果集返回到rest地址上,同时返回查询的行和列。
    参数:db 要执行查询语句的数据库
               sql  要执行的select查询语句
               result 查询的结果集是一个三级指针//
               nrow 查询的结果的行数
               ncol 查询的结果的列数
               errmsg 如果执行有错误,则存储错误
    返回值:成功    0
                  失败 非0;

#include <stdio.h>
#include <sqlite3.h>

int show(void*arg ,int col ,char**result ,char**title)
{
    *(int*)arg = 1;
    return 0;
}
int main(int argc, char *argv[])
{
    sqlite3* db;
    int ret = sqlite3_open("aaa.db",&db);
    if(SQLITE_OK != ret)
    {
        fprintf(stderr,"open db error:%s\n",sqlite3_errmsg(db));
        sqlite3_close(db); 
        return  1;
    }

    char name[50]="yyy";
    char pass[50] ="18";
    char sql_cmd[256]={0};
    sprintf(sql_cmd,"select * from user where name like '%s' and age ='%s';"
            ,name,pass);
    char * errmsg;
    int flag = 0;
    ret = sqlite3_exec(db,sql_cmd,show,&flag,&errmsg);
    if(SQLITE_OK != ret)
    {
        fprintf(stderr,"exec sqlcmd error:%s\n",errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db); 
        return  1;
    }
    if(0 == flag)
    {
        printf("username passwd error\n");
    }
    else 
    {
        printf("username passwd correct\n");
    }
    sqlite3_close(db);
    return 0;
}

执行sql语句:sqlite3_exec();   insert delete update
    int sqlite3_exec(sqlite3 *db,char *sql,callback fun,void * arg,char ** errmsg);
    功能:在db数据库上执行sql 非查询语句。并将结果返回。
    参数:db 要执行sql的数据库
               sql  要执行的非查询sql语句
               fun  如果该函数要执行查询语句,则该回调函数用来回收查询的结果。第三个参数返回结果
               arg  回调函数的参数,如果没有回调函数则该参数为NULL;
               errmsg  执行过程中的错误信息
    返回值:成功     0
                  失败  非0 ;

#include <stdio.h>
#include <sqlite3.h>

int main(int argc, char *argv[])
{
    sqlite3* db;
    int ret = sqlite3_open("aaa.db",&db);
    if(SQLITE_OK != ret)
    {
        fprintf(stderr,"open db error:%s\n",sqlite3_errmsg(db));
        sqlite3_close(db); 
        return  1;
    }
    char sql_cmd[256]="insert into user values(10,'yyy',18);";
    char * errmsg;
    ret = sqlite3_exec(db,sql_cmd,NULL,NULL,&errmsg);
    if(SQLITE_OK != ret)
    {
        fprintf(stderr,"exec sqlcmd error:%s\n",errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db); 
        return  1;
    }

    sqlite3_close(db);
    return 0;
}

int fun(void *arg ,int f_num,char ** f_value,char ** f_name)    
    功能:该函数用于sqlite3_exec执行select语句的,结果集返回数据。
    参数:arg 由sqlite3_exec传入的参数
               f_num 执行该命令所返回测结果集的字段个数。
               f_value 查询结果集中的字段的值。
               f_name  查询结果集中的字段的名称。
    返回值:成功   0
                  失败 非0
    注意:该回调函数必须有返回值,否则可能导致查询异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937573.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【入门篇】2.3 STM32启动模式(一)

一,Boot引脚分步 二,启动电路 三,启动模式 STM32F4 根据 BOOT 引脚的电平选择启动模式,这两个 BOOT 引脚根据外部施加的电平来决定芯片的启动地址。 下表中 BOOT0 和 BOOT1 是 STM32 芯片上面的两个引脚,用于控制 STM32

【Elasticsearch】Elasticsearch 中的节点角色

Elasticsearch 中的节点角色 1.主节点&#xff08;master&#xff09;1.1 专用候选主节点&#xff08;dedicated master-eligible node&#xff09;1.2 仅投票主节点&#xff08;voting-only master-eligible node&#xff09; 2.数据节点&#xff08;data&#xff09;2.1 内容…

引起全球大规模蓝屏故障的CrowdStrike是什么,到底发生了什么?|TodayAI

在周五早晨&#xff0c;一场由网络安全公司CrowdStrike引发的大规模故障使全球范围内的多家大型航空公司、电视广播公司、银行和其他重要服务陷入停顿。此次故障导致无数Windows机器出现“蓝屏死机”&#xff08;BSOD&#xff09;&#xff0c;系统无法正常启动。据悉&#xff0…

畅玩游戏新选择 :游戏本 Windows10 64位 专业版!

对于喜欢游戏竞技的玩家而言&#xff0c;选择一款合适的操作系统对于提升游戏体验至关重要。为了满足这一需求&#xff0c;系统之家小编将带来高性能的游戏本专用Win10操作系统。这一版本系统不仅注重游戏的稳定性&#xff0c;还针对玩家在游戏中可能遇到的超时检测和恢复&…

如何处理 PostgreSQL 中死锁的情况?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 如何处理 PostgreSQL 中死锁的情况&#xff1f;一、认识死锁二、死锁的症状三、死锁的检测四、预防死锁…

C++基础知识:引用的基本使用

1.作用&#xff1a; 给变量别名 2.语法&#xff1a; 数据类型 &别名原名 3.图例解释&#xff1a; 4.代码解释&#xff1a; #include<iostream>using namespace std;int main(){//引用基本语法int a10;int &ba;//两者公用了空间b和a都可以改变//该空间内的数…

一分钟图情论文:《智慧数据驱动的古籍智慧性保护体系研究》

中山大学的陈涛、苏日娜等人合著的《智慧数据驱动的古籍智慧性保护体系研究》论文探讨了智慧数据在古籍保护中的应用&#xff0c;提出了古籍智慧性保护体系框架。 智慧数据是一个动态的变量&#xff0c; 而非静态的常量&#xff0c;具有定性评价、流变发展和多态组成三个特点古…

Getx学习笔记之中间件鉴权

目录 前言 一、实现步骤 1.添加依赖 2.创建鉴权中间件 3.定义路由 4.设置初始路由 5.模拟登陆状态 二、Getx鉴权步骤总结 三、本文demo示例 四、参考文章 前言 在 Flutter 中&#xff0c;使用 GetX 可以很方便地实现中间件鉴权&#xff08;Authentication&#xff09…

Ubuntu编译ffmpeg并添加cmake工程

文章目录 前言前提须知为什么要自己编译 FFmpeg前提软件包与工具的安装编译ffmpeg写CMakeList.txt包含ffmpeg到我们项目中 总结 前言 FFmpeg 是一个领先的多媒体框架&#xff0c;能够解码、编码、转码、复用、解复用、流化、过滤和播放几乎所有人类和机器创造的内容。FFmpeg 包…

视频监控平台LntonCVS视频融合共享平台智慧安防视频监控汇聚应用方案

LntonCVS是一款功能强大且灵活部署的安防视频监控平台。它支持多种主流标准协议&#xff0c;包括GB28181、RTSP/Onvif、RTMP等&#xff0c;同时能够兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统的安防监控功能&#xff0c;还支持接入AI智能分析&#x…

解读vue3源码-响应式篇2

提示&#xff1a;看到我 请让我滚去学习 文章目录 vue3源码剖析reactivereactive使用proxy代理一个对象1.首先我们会走isObject(target)判断&#xff0c;我们reactive全家桶仅对对象类型有效&#xff08;对象、数组和 Map、Set 这样的集合类型&#xff09;&#xff0c;而对 str…

月之暗面科技有限公司(Moonshot AI)内推

月之暗面科技有限公司&#xff08;Moonshot AI&#xff09;内推 公司简介 月之暗面科技有限公司&#xff0c;一家致力于实现通用人工智能&#xff08;AGI&#xff09;的创新企业&#xff0c;其主力产品 Kimi 智能助手&#xff0c;以其超长文本处理能力和多端同步功能&#xff…

215. 数组中的第K个最大元素 347. 前 K 个高频元素(LeetCode热题100)

215. 数组中的第K个最大元素 - 力扣&#xff08;LeetCode&#xff09; 写个快排&#xff0c;使数组升序&#xff0c;返回倒数第k个元素即可 func quickSort(nums []int, l int, r int) {if l > r {return}x : nums[(l r) / 2]i : l - 1j : r 1for i < j {for {iif n…

【HTML入门】第十六课 - 网页中的按钮们

这一小节&#xff0c;我们说一说 html网页 中的按钮。按钮的作用&#xff0c;就是让用户点呗&#xff0c;点了以后触发一些事件&#xff0c;可以做一些事情。 目录 1 input 按钮 一 2 input 按钮二 3 button 按钮 4 链接a标签 5 用其他元素做按钮 6 用图片做一个按钮 1 …

为什么要从C语言开始编程

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;很多小伙伴在入门编程时。都…

Python学习—open函数,json与pickle知识点,Os模块详解

目录 1. Open函数 2.json与pickle模块 json模块 1. json.dumps() 2. json.dump() 3. json.loads() 4. json.load() pickle 模块 1. pickle.dumps() 2. pickle.dump() 3. pickle.loads() 4. pickle.load() 3.Os模块 1. Open函数 在Python中&#xff0c;open() 函数…

【大数据】JSON文件解析,对其文本聚类/情感分析

目录 引言 JSON&#xff08;JavaScript Object Notation&#xff09; 文本聚类K-means 基本步骤 优点 缺点 实际应用 情感分析 核心任务与应用场景 算法原理与技术 json数据集 情感分析实现 文本聚类实现 引言 JSON&#xff08;JavaScript Object Notation&#…

AIoTedge 智能边缘物联网平台

AIoTedge智能边缘物联网平台是一个创新的边云协同架构&#xff0c;它为智能设备和系统提供了强大的数据处理和智能决策能力。这个平台的核心优势在于其边云协同架构设计&#xff0c;它优化了数据处理速度&#xff0c;提高了系统的可靠性和灵活性&#xff0c;适用于多种场景&…

华为OD机考题(HJ61 放苹果)

前言 经过前期的数据结构和算法学习&#xff0c;开始以OD机考题作为练习题&#xff0c;继续加强下熟练程度。 描述 把m个同样的苹果放在n个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f; 注意&#xff1a;如果有7个苹果和3…

uniapp bug解决:uniapp文件查找失败:‘uview-ui‘ at main.js:14

文章目录 报错内容解决方法main.js 文件中 uView 主 JS 库引入 uView 的全局 SCSS 主题文件内容修改引入 uView 基础样式内容修改配置 easycom 内容修改 报错内容 10:50:51.795 文件查找失败&#xff1a;uview-ui at main.js:14 10:59:39.570 正在差量编译... 10:59:43.213 文…