当前位置: 首页 > news >正文

【全志H616开发】SQLite打开/创建数据库的C接口

文章目录

  • 打开/创建数据库的C接口函数介绍
    • sqlite3_open函数
    • sqlite3_close函数
    • sqlite3_errmsg函数
  • 代码示例

打开/创建数据库的C接口函数介绍

sqlite3_open函数

sqlite3_open 是 SQLite 数据库库中的一个函数,用于打开一个新的数据库连接。如果指定的数据库文件不存在,SQLite 将创建一个新的数据库文件。这个函数的原型是:

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

参数

  • const char *filename:这是一个 C 字符串,指定要打开的数据库文件的路径和名称。如果传递 “:memory:”,则
    SQLite 将创建一个在内存中运行的临时数据库
  • sqlite3 **ppDb:这是一个指向 sqlite3 结构体指针的指针。当函数成功执行后,它将指向一个新的数据库连接对象。

返回值
这个函数返回一个整数,表示操作的结果。常见的返回值包括:

  • SQLITE_OK(0):表示操作成功,数据库成功打开。
  • 其他错误代码:表示操作失败。错误代码的定义可以在 SQLite 的官方文档中找到。

sqlite3_close函数

sqlite3_close 是 SQLite 数据库库中的一个函数,用于关闭一个打开的数据库连接。这个函数的原型是:

int sqlite3_close(sqlite3*);

参数

  • sqlite3 *: 这是一个指向已打开的数据库连接对象的指针。这个指针之前是通过 sqlite3_open 或相关函数获得的。

返回值
这个函数返回一个整数,表示操作的结果。常见的返回值包括:

  • SQLITE_OK(0):表示操作成功,数据库连接成功关闭
  • 其他错误代码:表示操作失败。错误代码的定义可以在 SQLite
    的官方文档中找到。例如,如果有未完成的事务或未释放的内存,可能会返回错误代码 SQLITE_BUSY

sqlite3_errmsg函数

用于获取最近一次 SQLite 数据库操作的错误消息。这个函数的原型是:

const char *sqlite3_errmsg(sqlite3*);

参数

  • sqlite3 *: 这是一个指向数据库连接对象的指针。这个指针是通过 sqlite3_open 或相关函数获得的。

返回值

  • 这个函数返回一个常量字符指针,指向包含最近一次数据库操作错误消息的字符串。这个字符串描述了最近一次在给定数据库连接上执行的 SQLite
    函数调用所遇到的错误。如果最近的操作没有错误,该函数返回的字符串将表示操作成功(通常是 “not an error”)。

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

sqlite3_errcode(sqlite3*) ;

错误代码信息:
在这里插入图片描述

代码示例

#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>int main(int argc,char **argv)
{sqlite3 *db = NULL;int ret = 0;if(argc<2){printf("Uage: %s xxx.db\n",argv[0]);exit(-1);}if((ret = sqlite3_open(argv[1],&db)) == SQLITE_OK){  //打开或创建一个数据库对象 成功返回SQLITE_OK 0printf("ret = %d   create %s ok\n",ret,argv[1]);//打印返回的数值}else{printf("ret = %d   creat %s fail\n",ret,argv[1]);//打印返回错误码的数值printf("error num = %d  error mesg:%s\n",sqlite3_errcode(db),sqlite3_errmsg(db));//获取最近调用的API接口返回的错误代码 and 错误信息输出if(ret==14){//错误码判断printf("permisson deny\n");}exit(-1);}sqlite3_close(db);return 0;
}

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 一款功能强大的免费开源卸载工具
  • 基于N32L406MB EasyFlash参数(key-value)记录库移植
  • 设计模式-策略模式的完整代码示例及测试验证
  • 【Python】期权--隐含波动率计算
  • 手把手构建Netty
  • 【前端 · 面试 】TCP 总结(一)—— 概述
  • SpringCloud Alibaba 微服务(四):Sentinel
  • Web前端:HTML篇(一)
  • ubuntu修改anaconda权限
  • 配置文件application.properties
  • input().strip()什么意思
  • jdk1.8中HashMap为什么不直接用红黑树
  • 基于opencv的答题卡识别
  • AI的学习明确路径
  • 环境如何搭建部署Nacos
  • [笔记] php常见简单功能及函数
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Angular6错误 Service: No provider for Renderer2
  • HTTP中GET与POST的区别 99%的错误认识
  • JAVA_NIO系列——Channel和Buffer详解
  • Java教程_软件开发基础
  • leetcode46 Permutation 排列组合
  • MySQL几个简单SQL的优化
  • Objective-C 中关联引用的概念
  • ViewService——一种保证客户端与服务端同步的方法
  • 测试如何在敏捷团队中工作?
  • 彻底搞懂浏览器Event-loop
  • 创建一种深思熟虑的文化
  • 动态规划入门(以爬楼梯为例)
  • 一天一个设计模式之JS实现——适配器模式
  • 在Unity中实现一个简单的消息管理器
  • 智能合约开发环境搭建及Hello World合约
  • 你对linux中grep命令知道多少?
  • Hibernate主键生成策略及选择
  • kubernetes资源对象--ingress
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (c语言)strcpy函数用法
  • (备忘)Java Map 遍历
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (回溯) LeetCode 77. 组合
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (十五)使用Nexus创建Maven私服
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)80c52学习之旅-起始篇
  • (转)linux 命令大全
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .bat批处理(七):PC端从手机内复制文件到本地