SQL学习3

24.10.3学习目录

  • 一.c语言操作数据库

一.c语言操作数据库

(1)打开、关闭数据库函数

//打开数据库
int sqlite3_open(char *db_name,sqlite3 **db);

db_name:数据库文件名,若文件名中有ASCLL码中以外的字符,其必须为UTF-8;
sqlite3 :数据库标识,其为数据库操作句柄,其可以对数据库进行相应操作;

成功返回SQLITE_OK;

//关闭数据库
int sqlite3_close(sqlite3 *db);

成功返回SQLITE_OK;

(2)执行SQL语句函数
执行sql指向的SQL语句,若结果集不为空,函数会调用函数指针callback所指向的函数

int sqlite_exec(sqlite3 *db,const char *sql,exechandler_t callback,void *arg,char **errmsg);

db:数据库的标识;
sql:SQL语句,以;结尾;
callback:其为回调函数指针,当该条语句执行之后,sqlite3会去调用提供好的该函数,其用于处理有结果集时;
arg:当执行sqlite_exec的时候传递给回调函数的参数;
errmsg:存放错误信息的地址,打印错误信息,printf(“%s\n”,errmsg);

(3)回调函数
用户定义,处理sql语句执行后返回的结果集

//回调函数定义
typedef int (*exechandler_t)(void *para,int n_column,char **column_value,char **column_name);

para:表示sql执行函数sqlite_exec传给该函数的参数,其为任意类型;
n_column:结果集的列数;
column_value:指针数组的地址,存放一行信息中各个列值的首地址;
column_name:指针数组的地址,存放一行信息中各个列值对应列名的首地址;

(4)获取表的函数(不使用回调函数)
函数将结果集相关的数据的 地址保存在函数的参数中

int sqlite3_get_table(sqlite3 *db,const char *sql,char ***resultp,int *nrow,int *ncolumn,char **errmsg);

db:数据库标识;
sql:SQL语句;
resultp:指针数组的地址,其记录了结果集的数据,
nrow:结果集的行数;
ncolumn:结果集的列数;
errmsg:错误信息;

//释放sqlite3_get_table分配的内存
void sqlite3_free_table(char **resultp);

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

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

相关文章

程序猿成长之路之设计模式篇——设计模式简介

无论是对于代码质量还是代码可维护性、可扩展性,使用合适的设计模式都能够起到促进提升的作用,此外在软考的软件工程师、系统架构师职称考试中,设计模式也是必考的一块内容,因此我打算开拓一个新的专栏简单介绍一下设计模式&#…

MySQL 实验 5:表数据的增、删、改操作

MySQL 实验 5:表数据的增、删、改操作 目录 MySQL 实验 5:表数据的增、删、改操作一、添加数据行二、删除数据行三、修改表中的数据 MySQL 数据表的数据操作包括:添加数据行(增:使用 insert 命令)、删除数据…

腾讯一面-LRU缓存

为了设计一个满足LRU(最近最少使用)缓存约束的数据结构,我们可以使用哈希表(HashMap)来存储键值对,以便在O(1)时间复杂度内访问任意键。同时,我们还需要一个双向链表(Doubly Linked …

Hive数仓操作(三)

一、Hive 数据库操作 1. 创建数据库 基本创建数据库命令: CREATE DATABASE bigdata;说明: 数据库会在 HDFS 中以目录的形式创建和保存,数据库名称会存储在 Hive 的元数据中。如果不指定目录,数据库将在 /user/hive/warehouse 下…

智慧水务可视化:高效管理水资源

利用图扑先进的可视化技术,实现对水资源的实时监控与高效管理,提高水务工作的透明度和决策效率,促进水资源的可持续利用。

太原网站制作打造企业网站的关键要素

太原网站制作:打造企业网站的关键要素 在数字化时代,企业网站成为了品牌形象和市场营销的重要一环。太原的企业在进行网站制作时,需要关注几个关键要素,以确保网站能够有效提升企业竞争力和用户体验。 **1. 目标明确** 在网站制…

自动化运维工具 Ansible

Ansible 基础 Ansible 介绍 Ansible 是一个自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、 func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 Ansible 的…

利用Spring Boot打造新闻推荐解决方案

1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…

前端开发设计模式——策略模式

目录 一、策略模式的定义和特点 1.定义: 2.特点: 二、策略模式的实现方式 1.定义策略接口: 2.创建具体策略类: 3.定义上下文类: 三、策略模式的应用场景 1.表单验证场景: 2.动画效果切换场景&…

Elasticsearch 8.16 和 JDK 23 中的语言环境变化

作者:来自 Elastic Simon Cooper 随着 JDK 23 即将发布,语言环境信息中有一些重大变化,这将影响 Elasticsearch 以及你提取和格式化日期时间数据的方式。首先,介绍一些背景知识。 什么是语言环境? 每次 Java 程序需要…

资源《Arduino 扩展板4-单游戏摇杆》说明。

资源链接: Arduino 扩展板4-单游戏摇杆 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程,采用AD做的。 该文件打板后配合Arduino使用,属于Arduino的扩展板。 该文件…

JVM和GC监控技术

一、监控技术简介 JVM是什么?项目里面有JVM吗?JVM跟Tomcat有什么关系?为什么需要去分析JVM? 1. JVM(全称:Java Virtual Machine),Java虚拟机 是Java程序运行的环境,它是一个虚构的计算机&…

Netty 与 WebSocket之间的关系

WebSocketProtocolHandler 和 Netty 在处理 WebSocket 连接时扮演不同的角色,但它们通常是一起使用的,尤其是在基于 Netty 的项目中。为了更好地理解它们之间的区别,我们首先需要了解 WebSocket 和 Netty 的基本概念。 WebSocket WebSocket…

RK3568平台(显示篇)车机图像显示偏白问题分析

一.显示偏白图片对比 正常图像: 偏白图像: 二.分析过程

51单片机系列-按键检测原理

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 独立按键是检测低电平的。 下面我们来看一张对应的电路原理图: 在这张图当中,P1,P2,P3内部都上拉了电阻,但是P0没有&am…

day03 笔试练习

1.简写单词 题目链接&#xff1a;简写单词_牛客题霸_牛客网 public static void main(String[] args) {Scanner sc new Scanner(System.in);while(sc.hasNext()){ // 输入多少读入多少char ch sc.next().charAt(0); // 提取首字母if(ch > a && ch < z){System…

项目定位与服务器(SERVER)模块划分

目录 定位 HTTP协议以及HTTP服务器 高并发服务器 单Reactor单线程 单Reactor多线程 多Reactor多线程 模块划分 SERVER模块划分 Buffer 模块 Socket模块 Channel 模块 Connection模块 Acceptor模块 TimerQueue模块 Poller模块 EventLoop模块 TcpServer模块 SE…

ElementUI el-tree 树组件 增加辅助线

需求 项目需求给elementUI的el-tree添加辅助线&#xff0c;并且不能使用其他插件&#xff0c;没办法只能该样式了。 效果 代码 html <template><div><el-scrollbar class"long-content"><el-tree node-key"id":data"deptTre…

Android 简单实现联系人列表+字母索引联动效果

效果如上图。 Main Ideas 左右两个列表左列表展示人员数据&#xff0c;含有姓氏首字母的 header item右列表是一个全由姓氏首字母组成的索引列表&#xff0c;点击某个item&#xff0c;展示一个气泡组件(它会自动延时关闭)&#xff0c; 左列表滚动并显示与点击的索引列表item …

C++ 内存池(Memory Pool)详解

1. 基本概念 内存池是一种内存管理技术&#xff0c;旨在提高内存分配的效率。它通过预先分配一块大的内存区域&#xff08;池&#xff09;&#xff0c;然后从中分配小块内存来满足应用程序的需求。这样可以减少频繁的内存分配和释放带来的性能开销。 2. 设计思路 内存池的设…