SQLite数据库使用指南以及相关API编程

这篇具有很好参考价值的文章主要介绍了SQLite数据库使用指南以及相关API编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQLite介绍

  • SQLite是一种基于C语言开发的轻量级、快速、自包含、高可靠性和全功能的SQL数据库引擎。它是全球范围内使用最为广泛的数据库引擎,被嵌入到所有移动设备和大部分计算机中,并且伴随着无数日常使用的应用程序一起提供。
  • SQLite的文件格式具有稳定性、跨平台性以及向后兼容性,开发者承诺将持续保持这种特性至少到2050年。因其特点,SQLite数据库文件常被用作不同系统间交换丰富内容的容器,并作为一种长期数据归档格式。目前,全球有超过1万亿(1e12)个SQLite数据库处于活跃使用状态。

SQLite相关链接

  • SQLite主页
  • SQLite下载页
  • SQLite github地址

SQLite压缩包介绍及使用

  • 进入到SQLite下载页后,可以看到有很多压缩包。下面简单介绍下这些不同压缩包有什么区别。
    SQLite数据库使用指南以及相关API编程,开发语言,# C/C++开发,数据库,sqlite,c++
  • Source Code -> sqlite-amalgamation-3450200.zip
    • 是 SQLite 数据库引擎提供的一个打包形式,它包含了编译 SQLite 库所需的所有 C 源代码文件的合并版本。这个包是为了简化 SQLite 的分发和集成到其他项目中而设计的。
    • 如果想在自己代码中集成SQLite数据库,下载这个包并包含其头文件和源文件即可。
  • Source Code -> sqlite-autoconf-3450200.tar.gz
    • SQLite 的另一种打包形式,它是为方便在类 Unix 系统(如 Linux、BSD、Mac OS X 等)上通过自动配置工具 autoconf 和 make 进行编译和安装而准备的。这个包通常包含了 SQLite 源代码以及用于生成可移植配置脚本(configure)的一系列辅助文件。
    • 这个包主要在Linux系统使用,如果不想集成SQLite源代码,而是集成SQLite的动态库,可以下载这个包在Linux系统上编译。
    • 这个包下载解压后,分别执行以下命令编译安装
    •   ./configure --prefix=${pwd}/_install
        make
        make install
      
    • 执行完成后,在当前目录的_install目录下就会生成对应的头文件,库文件和可执行程序。
  • Documentation -> sqlite-doc-3450200.zip
    • SQLite的一些说明文档
  • Precompiled Binaries for Linux -> sqlite-tools-linux-x64-3450200.zip
    • 这个包是Linux平台X86架构的可执行程序,如果不需要将SQLite集成到代码中,可以直接下载这个包,在命令行执行SQL命令去操作数据库。
  • Precompiled Binaries for Windows -> sqlite-dll-win-x86-3450200.zip
    • 提供的Windows平台32位动态库
    • 这个包里只有动态库,我们需要借助Visual Studio生成一下静态库,如果安装的是Visual Studio 2015,找到 Microsoft Visual Studio 14.0\VC\bin\lib.exe这个程序,在cmd命令行执行以下命令
    •   "D:\Microsoft Visual Studio 14.0\VC\bin\lib.exe" /def:sqlite3.def /machine:ix86
      
    • 执行成功后,就会生成静态库文件。
  • Precompiled Binaries for Windows -> sqlite-dll-win-x64-3450200.zip
    • 提供的Windows平台64位动态库,如何生成静态库参考上面。
  • Precompiled Binaries for Windows -> sqlite-tools-win-x64-3450200.zip
    • Windows平台可执行程序
    • 如果不想集成SQLite,可以直接下载这个包,在命令行运行程序执行SQL语句操作数据库。
  • Alternative Source Code Formats -> sqlite-src-3450200.zip
    • 这个包未经过预处理的SQLite源代码,它包含完整的源文件树结构,包括所有的C语言源码文件、头文件、Makefile以及其他支持文件。
  • 总结
    • 如果只需要通过命令行,执行SQL语句操作数据库,Linux平台下载这个包 sqlite-tools-linux-x64-3450200.zip,Windows平台下载 sqlite-tools-win-x64-3450200.zip
    • 如果需要把SQLite以代码形式集成到我们的代码工程中,通过SQLite提供的API操作数据库。Windows和类Unix平台都可以直接使用这个包 sqlite-amalgamation-3450200.zip
    • 如果需要把SQLite以库形式集成到我们的代码工程中,类Unix平台下载这个包sqlite-autoconf-3450200.tar.gz去编译,Windows平台下载 sqlite-dll-win-x86-3450200.zip

命令行使用

  • 启动SQLite
    • 直接运行sqlite可执行程序,以Windows为例
      SQLite数据库使用指南以及相关API编程,开发语言,# C/C++开发,数据库,sqlite,c++
    • 运行成功后,就进入了数据库,接下来可以执行SQL语句来操作
  • 创建或打开数据库
    • 执行以下命令,就会打开或者一个数据库
    •   .open student.db
      
  • 创建表
    •   CREATE TABLE STUDENT(ID INT PRIMARY KEY NOT NULL, NAME CHAR(128), SCORE INT);
      
  • 插入数据
    •   INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1001, 'JACK', 98);
        INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1002, 'MARY', 96);
        INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1003, 'TOM', 96);
      
  • 查询数据
    •   SELECT * FROM STUDENT;
      
      SQLite数据库使用指南以及相关API编程,开发语言,# C/C++开发,数据库,sqlite,c++
    • 可以看到表中就有了我们插入的数据。
  • 命令行的使用就不过多介绍,主要是SQL语句的使用。

SQLite API介绍

  • SQLite API编程常用的接口有以下几个
  • sqlite3_open
    •   int sqlite3_open(const char *zFilename, sqlite3 **ppDb)
      
    • 函数功能:打开一个指向 SQLite 数据库文件的连接
    • 参数
      • zFilename:数据库名
      • ppDb : 数据库句柄
    • 返回值:成功返回 SQLITE_OK
  • sqlite3_exec
    •   int sqlite3_exec(sqlite3 *ppDb,  const char *sql,  int (*callback)(void*, int, char**,char**),  void *data,  char **errmsg)
      
    • 函数功能:执行SQL语句,异步接口。
    • 参数
      • ppDb:打开的数据库句柄
      • sql:需要执行的SQL语句
      • callback:回调函数,主要用于查询数据时,在该回调函数中获取数据
        • 参数1:回调函数可通过这个参数把数据传到外部
        • 参数2:查询的数据库表数据一共有多少行
        • 参数3:数据字段名
        • 数据4:数据值
      • data: 传递给回调函数的参数
      • errmsg:执行SQL语句出错时的错误信息
    • 返回值:成功返回 SQLITE_OK
  • sqlite3_get_table
    •   int sqlite3_get_table(sqlite3 *ppDb, const char *sql, char ***pazResult, int *pnRow, int *pnColumn, char **errmsg)
      
    • 函数功能:执行SQL语句,同步接口。
    • 参数
      • ppDb:数据库句柄
      • sql:需要执行的SQL语句
      • pazResult:输出参数,用于存储查询结果的二维字符数组指针
      • pnRow:输出参数,用于接收查询结果的行数
      • pnColumn:输出参数,用于接收查询结果的列数
      • errmsg:执行SQL语句出错时的错误信息
    • 返回值:成功返回 SQLITE_OK
  • sqlite3_close
    •   int sqlite3_close(sqlite3 *db);
      
    • 函数功能:关闭数据库

编程示例

  •   #include <stdio.h>
      #include "sqlite3.h"
      
      int callback(void* para, int columenCount, char** columnValue, char** columnName) {
      	char *stData = (char*)para;
      	// 获取的数据可以在这里保存和处理,也可以通过保存到 para 参数中,在外部保存处理
      	for (int i = 0; i < columenCount; i++) {
      		printf("%s\t%s\n", columnName[i], columnValue[i]);
      	}
      	strcpy(stData, "this is callback");
      	return 0;
      }
      
      int main(){
      	sqlite3 *db = NULL;
      	char *zErrMsg = NULL;
      	char sql[1024] = { 0 };
      
      	// 打开数据库
      	int rc = sqlite3_open("student.db", &db);
      	if (rc != SQLITE_OK) {
      		printf("open sqlite failed, errMsg: %s.", sqlite3_errmsg(db));
      		return -1;
      	}
      
      	// 创建表
      	strcpy(sql, "CREATE TABLE STUDENT(ID INT PRIMARY KEY NOT NULL, NAME CHAR(128), SCORE INT);");
      	rc = sqlite3_exec(db, sql, callback, NULL, &zErrMsg);
      	if (rc != SQLITE_OK) {
      		printf("create table failed, errMsg: %s", zErrMsg);
      		sqlite3_free(zErrMsg);
      		sqlite3_close(db);
      		return -1;
      	}
      
      	// 插入数据
      	strcpy(sql, "INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1001, 'JACK', 98);INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1002, 'MARY', 96);INSERT INTO STUDENT(ID,NAME,SCORE) VALUES (1003, 'TOM', 96);");
      	rc = sqlite3_exec(db, sql, callback, NULL, &zErrMsg);
      	if (rc != SQLITE_OK) {
      		printf("insert data failed, errMsg: %s", zErrMsg);
      		sqlite3_free(zErrMsg);
      		sqlite3_close(db);
      		return -1;
      	}
      
      	char stData[100] = { 0 };
      	strcpy(sql, "SELECT * FROM STUDENT;");
      	rc = sqlite3_exec(db, sql, callback, stData, &zErrMsg);
      	if (rc != SQLITE_OK) {
      		printf("query data failed, errMsg: %s", zErrMsg);
      		sqlite3_free(zErrMsg);
      		sqlite3_close(db);
      		return -1;
      	}
      
      	printf("stData = %s\n", stData);
      
      	// 同步接口
      	char **dbResult;
      	int nRow = 0, nColumn = 0;
      	strcpy(sql, "SELECT * FROM STUDENT;");
      	rc = sqlite3_get_table(db, sql, &dbResult, &nRow, &nColumn, zErrMsg);
      	if (rc != SQLITE_OK) {
      		printf("query data failed, errMsg: %s", zErrMsg);
      		sqlite3_free(zErrMsg);
      		sqlite3_close(db);
      		return -1;
      	}
      
      	// 打印字段名
      	for (int i = 0; i < nColumn; i++) {
      		printf("%s\t", dbResult[i]);
      	}
      	printf("\n");
      
      	//打印数据
      	for (int i = nColumn; i <= nRow * nColumn; i += nColumn) {
      		for (int j = 0; j < nColumn; j++) {
      			printf("%s\t", dbResult[i + j]);
      		}
      		printf("\n");
      	}
      
      	// 释放dbResult
      	sqlite3_free_table(dbResult);
      
      	sqlite3_close(db);
      
      	system("pause");
      	return 0;
      }
    
  • 打印结果
    SQLite数据库使用指南以及相关API编程,开发语言,# C/C++开发,数据库,sqlite,c++

参考

  • SQLite教程

文章来源地址https://www.toymoban.com/news/detail-841744.html

到了这里,关于SQLite数据库使用指南以及相关API编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

    MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库。 有关 MySQL 远程管理软件,你可以选择 Windows 下的 HeidiSQL,MacOS 下的 Sequel Ace 或者 MySQL 官方推出的跨平台客户端 MySQL Workbench 。 本文使用 Mac 版

    2024年02月10日
    浏览(37)
  • MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用

    您可以通过使用\\\"LIMIT\\\"语句来限制查询返回的记录数量。以下是一个示例,获取您自己的Python服务器中\\\"customers\\\"表中的前5条记录: 如果您想返回五条记录,从第三条记录开始,可以使用\\\"OFFSET\\\"。以下是一个示例: 通过使用JOIN语句,您可以基于它们之间的相关列合并两个

    2024年02月05日
    浏览(42)
  • 如何使用IDEA连接PostgreSQL数据库:从新手到高手的全面指南

    博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接 : 🔗 精选专栏 : 《面试题大全》 — 面试准备的宝典! 《IDEA开发秘籍》 — 提升你的IDEA技能! 《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师! 《100天精通Golang(基础入门篇)》 — 踏入

    2024年04月15日
    浏览(147)
  • 【IDEA使用指南】使用Hibernate框架的Java项目,如何通过数据库表自动生成实体模型?

    步骤1:找到并打开“Persistence”工具栏。 如下图所示,找到 “View - Tool Windows - Persistence”,点击“Persistence”。 步骤2:找到并打开“Import Database Schema” 窗口。 在开发工具左下角会弹出持久化配置的工具栏“Persistence”,如下图所示。单击之后有一个弹框,找到弹框中的项

    2024年02月05日
    浏览(56)
  • 实战指南:使用XShell通过堡垒机(跳板)连接服务器、数据库(完整版详解教程)

    最近公司配置了堡垒机,因此在此处记录一下堡垒机连接服务器的方法。 打开XShell 填写堡垒机的信息 填写登录用户、密码 如果你是密码登录则: 如果你是通过密钥登录则 : 通过密钥登录,填写完以上内容后点击设置: 此时点击连接就可以连接到堡垒机。 配置连接 点击添

    2024年02月12日
    浏览(43)
  • 【SQL Server】数据库开发指南(六)索引和视图的使用技巧、方法与综合应用

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月06日
    浏览(62)
  • Python数据库编程全指南SQLite和MySQL实践

    本文分享自华为云社区《Python数据库编程全指南SQLite和MySQL实践》,作者: 柠檬味拥抱。 首先,我们需要安装Python的数据库驱动程序,以便与SQLite和MySQL进行交互。对于SQLite,Python自带了支持;而对于MySQL,我们需要安装额外的库,如 mysql-connector-python 。 SQLite是一种轻量级的

    2024年03月28日
    浏览(52)
  • .NET中轻松应用SQLite:零配置数据库引擎的完美指南

      SQLite 是一种轻量级的嵌入式数据库引擎,它在 .NET 中被广泛使用。SQLite 是一个零配置的数据库引擎,不需要服务器,可以直接在应用程序中使用。下面是一个简单的示例,演示如何在 .NET 中使用 SQLite,并提供了常见的查询、增加、修改和删除功能。 首先,你需要在项目中

    2024年02月02日
    浏览(52)
  • 在Python中利用内置SQLite3模块进行数据库操作的完整指南

      在Python中,使用SQLite非常方便,Python内置了 SQLite3 模块,无需额外安装。SQLite 是一个轻量级的嵌入式数据库,适用于小型项目和单用户应用。以下是一个简单的示例,演示如何在 Python 中使用 SQLite,并提供了常见的查询、增加、修改和删除功能。 首先,确保你的 Python 安装

    2024年02月03日
    浏览(50)
  • 【Android Studio】安卓APP期末作品记录之连接sqlite数据库以及简单的sqlite增删改查

    期末作品要求使用数据库,我自己折腾了一会,又看了很多博主发的文章,终于成功了,特此记录:使用SQLiteDatabase和SQLiteOpenHelper连接已有sqlite数据库。 第一步,导入sqlite数据库 因为我已经创建好了一个sqlite数据库,所以第一步得将我的数据库导入项目中 在app — src — ma

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包