全志H616——用C语言的形式操作数据库

news2024/11/17 10:52:57

sqlite3_open(const char *filename, sqlite3 **ppDb)

该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。

sqlite3_close(sqlite3*)

该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完

成。

如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。

const char *sqlite3_errmsg(sqlite3*);

sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码.

返回的错误信息列表如下:

主函数:

#include <stdio.h>
#include <sqlite3.h>
int main(char argc,char ** argv)
{
    int ret;
    sqlite3 *db;
    if(argc < 2){

        printf("usge:%s xxx.db\n",argv[0]);
        return -1;

    }

    if((ret = sqlite3_open(argv[1],&db) == SQLITE_OK)){

        printf("open %s success\n",argv[1]);

    }else{

        printf("error:%s\n",sqlite3_errmsg(db));
        return -1;
    }

    sqlite3_close(db);
    return 0;
}

:gcc xxx.c -lsqlite3(我这里是3,安装的时候注意版本)

:./a.out test.db

即可创建一个数据文件完成

创建并查看数据库中的数据:

  1 #include <stdio.h>
  2 #include <sqlite3.h>
  3 //int callback(void *arg, int column_size, char *column_value[], char \
  4 *column_name[])
  5 int callback(void *arg, int column_size, char *column_value[], char*column_name[])
  6 {
  7
  8     int i;
  9     printf("arg = %s\n",(char *)arg);
 10
 11     for(i=0;i<column_size;i++){
 12
 13         printf("%s = %s\n",column_name[i],column_value[i]);
 14     }
 15
 16     printf("========================\n");
 17     return 0;//必须返回0才能把数据库中的数据全部列举出来,返回其他的不行
 18 }
 19
 20 int main(char argc,char ** argv)
 21 {
 22     int ret;
 23     char *errmsg;
 24     sqlite3 *db;
 25     if(argc < 2){
 26
 27         printf("usge:%s xxx.db\n",argv[0]);
 28         return -1;
 29
 30     }
 31
 32     if((ret = sqlite3_open(argv[1],&db) == SQLITE_OK)){
 33
 34         printf("open %s success\n",argv[1]);
 35
 36     }else{
 37
 38         printf("error:%s\n",sqlite3_errmsg(db));
 39         return -1;
 40     }
 41
 42     //sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
 43     ret = sqlite3_exec(db,"create table stu2(id Integer,name char,score Integer);",callback,"connet of sql",&errmsg);
 44     if(ret != SQLITE_OK){
 45         printf("creat error:%s\n",errmsg);//与上面的exec函数的最后一个成员对应,用来打印错误信息
 46     }
 47     sqlite3_exec(db,"insert into stu2 values(001,'liming',69);",callback,"connet of sql",&errmsg);
 48     sqlite3_exec(db,"select * from stu2",callback,"connet of sql",&errmsg);
 49     sqlite3_close(db);
 50     return 0;
 51 }

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

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

相关文章

【Linux】环境变量本地变量

文章目录环境变量基本概念常见环境变量和环境变量相关的命令为什么带./运行我们的可执行程序本地变量环境变量的组织方式环境变量具有全局属性环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数 如&#xff1a;我们…

gRPC的简单应用

gRPC的简单应用 gRPC是由开发的一个高性能、通用的开源RPC框架&#xff0c;主要面向移动应用开发且基于HTTP/2协议标准而设计&#xff0c;同时支持大多数流行的编程语言。 官网&#xff1a;https://grpc.io/ 安装protoc 工具 https://protobuf.dev/ 安装Go插件 旧版本直接…

学习HandlerThread

HandlerThread是一个扩展了Thread的类。也就意味着它和普通的Thread类的调用没有什么区别&#xff0c;仍然要调用start()。 如上图所示&#xff0c;扩展后的HandlerThread类有一个Looper和Handler。 关于这一块的知识可以参考一下《关于Handler我们应该知道的知识》 HandlerTh…

普冉PY32系列(五) 使用JLink RTT代替串口输出日志

目录 普冉PY32系列(一) PY32F0系列32位Cortex M0 MCU简介普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境普冉PY32系列(三) PY32F002A资源实测 - 这个型号不简单普冉PY32系列(四) PY32F002A/003/030的时钟设置普冉PY32系列(五) 使用JLink RTT代替串口输出日志 JLink …

Python-第五天 Python函数

Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义&#xff1a;2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…

脑机接口协议V1.0

脑机接口&#xff0c;有时也称作“大脑端口”direct neural interface或者“脑机融合感知”brain-machine interface&#xff0c;它是在人或动物脑&#xff08;或者脑细胞的培养物&#xff09;与外部设备间建立的直接连接通路。在单向脑机接口的情况下&#xff0c;计算机或者接…

leaflet显示高程

很多地图软件都能随鼠标移动动态显示高程。这里介绍一种方法&#xff0c;我所得出的。1 下载高程数据一般有12.5m数据下载&#xff0c;可惜精度根本不够&#xff0c;比如mapbox的免费在线的&#xff0c;或者91卫图提供百度网盘打包下载的&#xff0c;没法用&#xff0c;差距太大…

记录robosense RS-LIDAR-16使用过程3

一、wireshark抓包保存pcap文件并解析ubuntu18安装wireshark&#xff0c;参考下面csdn教程&#xff0c;官网教程我看的一脸蒙&#xff08;可能英语太差&#xff09;https://blog.csdn.net/weixin_46048542/article/details/121730448?spm1001.2101.3001.6650.2&utm_medium…

秒杀项目之服务调用分布式session

目录 nginx动静分离 服务调用 创建配置zmall-cart购物车模块 创建配置zmall-order订单模块 服务调用 spring session实战 什么是Spring Session 为什么要使用Spring Session 错误案例展示 配置spring-session 二级域名问题 用户登录 nginx动静分离 第1步&#xff…

如何用演示程序检测K100|K720|K750电动发卡读写一体机性能

K100|K720|K750电动发卡读写一体机采用工业级设 计&#xff0c;表面烤漆处理&#xff0c;具有良好的耐磨耐腐蚀性。适应各种高、低温&#xff0c; 多灰尘等 恶劣环境。其发卡原理为拟人型摩擦式发卡&#xff0c;对各类变形卡有非常好的适应性。 CNC的精度保证卡距的绝对一致性、…

Filter过滤器完成验证代码的封装

Filter过滤器完成验证代码的封装filter是什么1 使用filter2 filter配置到项目中验证用户权限是需要反复使用的代码块&#xff0c;把他封装到filter中&#xff0c;减少代码冗余filter是什么 init()方法&#xff1a;初始化方法&#xff0c;在创建Filter后立即调用。可用于完成初始…

刚刚,体验了一把Bing chat很爽

文章目录刚刚&#xff0c;体验了一把Bing chat很爽你能做啥&#xff1f;与chatgpt有什么不同&#xff1f;以下是Bingchat的 10个新功能1⃣️在网上搜索结果2⃣️摘要链接3⃣️对话助手4⃣️向您发送实际信息&#xff0c;正确的链接5⃣️在单个查询中执行多个搜索6⃣️玩冒险游戏…

内网渗透(十八)之Windows协议认证和密码抓取-本地认证(NTML哈希和LM哈希)

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

【Web测试】各类web控件测试点汇总,软测人必备

一 、界面检查 进入一个页面测试&#xff0c;首先是检查title&#xff0c;页面排版&#xff0c;字段等&#xff0c;而不是马上进入文本框校验 1、页面名称title是否正确 2、当前位置是否可见 您的位置&#xff1a;xxx>xxxx 3、文字格式统一性 4、排版是否整齐 5、列表项显示…

leetcode: 3Sum

leetcode: 3Sum1. 题目描述2. 思考3. 解题3. 总结1. 题目描述 Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i ! j, i ! k, and j ! k, and nums[i] nums[j] nums[k] 0. Notice that the solution set must not contain …

爬虫Python入门好学吗?学什么?

爬虫Python入门好学吗&#xff1f;学爬虫需要具备一定的基础&#xff0c;有编程基础学Python爬虫更容易学。但要多看多练&#xff0c;有自己的逻辑想法。用Python达到自己的学习目的才算有价值。如果是入门学习了解&#xff0c;开始学习不难&#xff0c;但深入学习有难度&#…

2022年12月电子学会Python等级考试试卷(一级)答案解析

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;一级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1. 关于Python语言的注释&#xff0c;以下选项中描述错误的是&#xff1f;&#xff08; &#xff09; A. Python语言有两种注释方式&…

JavaEE16-Spring事务和事务传播机制

目录 1.为什么需要事务&#xff1f; 2.MySQL中事务的使用 3.Spring中事务的实现 3.1.编程式事务&#xff08;手动写代码操作事务&#xff09; 3.2.声明式事务&#xff08;利用注解自动开启和提交事务&#xff09;(使用为主) 3.2.1.Transactional作用范围 3.2.2.Transact…

JetpackCompose从入门到实战学习笔记8—ConstraintLayout的简单使用

JetpackCompose从入门到实战学习笔记8—ConstraintLayout的简单使用 1.简介&#xff1a; Compose 中的 ConstraintLayout ConstraintLayout 是一种布局&#xff0c;让您可以相对于屏幕上的其他可组合项来放置可组合项。它是一种实用的替代方案&#xff0c;可代替使用多个已嵌…

JVM垃圾回收机制GC理解

目录JVM垃圾回收分代收集如何识别垃圾引用计数法可达性分析法引用关系四种类型&#xff1a; 强、软、弱、虚强引用软引用 SoftReference弱引用 WeakReferenceWeakHashMap软引用与虚引用的使用场景虚引用与引用队列引用队列虚引用 PhantomReference垃圾回收算法引用计数复制 Cop…