数据库的基本内容前面都已经说得差点儿相同了。接下看看如何在C语言中使用sqlite。

一 接口

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

打开数据库,假设数据库不存在则新建一个数据库,并打开

sqlite3_close(sqlite3*)

关闭数据库。假设关闭之前还存在没有运行完的语句,将会返回SQLITE_BUSY

二 实例

1 文件夹结构

Projects{

main.c// 代码所在文件

sqlite{// 官网下载下来的sqlite压缩包解压之后的文件文件夹

shell.c// 本文件在项目中实际上是用不上的。这个文件是用来生成sqlite命令工具的,详细能够參考:sqlite学习笔记1

sqlite3.c

sqlite3.h

sqlite3ext.h

}

}

2 源码

// main.c
#include <stdio.h>
#include <stdlib.h>
#include "sqlite/sqlite3.h"#define DB_NAME "hanfeng.db"int main()
{sqlite3* db = NULL ;char* msg = NULL ;int ret = 0 ;ret = sqlite3_open(DB_NAME, &db);if (ret){fprintf(stderr, "error open datebase:%s\n.", DB_NAME) ;exit(0) ;}else{fprintf(stdout, "successfully open datebase.\n") ;}sqlite3_close(db) ;return 0;
}

为了今后扩展方便,现将代码改动例如以下:

#include <stdio.h>
#include <stdlib.h>
#include "sqlite/sqlite3.h"#define DB_NANE "sqlite/test.db"sqlite3 *db = NULL;
char* sql = NULL;
char *zErrMsg = NULL;
int ret = 0;typedef enum{false,true
} bool;static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{int i = 0;for(i=0; i < argc; i++){printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");}printf("\n");return 0;
}bool connectDB()
{ret = sqlite3_open(DB_NANE, &db);if( ret != SQLITE_OK){fprintf(stderr, "Error open database: %s\n", sqlite3_errmsg(db));sqlite3_free(zErrMsg);return false;}fprintf(stdout, "Successfully opened database\n");return true;
}bool closeDB()
{int ret = 0;ret = sqlite3_close(db);if ( ret == SQLITE_BUSY ){return false;}return true;
}int main(int argc, char* argv[])
{connectDB();closeDB();return 0;
}

3 编译执行

执行有两种方式,基于前面的笔记。我们并没有配置sqlite的环境。不过下载解压得到列一个目录sqlite,因此。须要用例如以下命令:

gcc -o main main.c ./sqlite/sqlite3.c -lpthread -ldl

假设下载配置安装了sqlite,则须要将上面的头文件包括改为:

#include <sqlite3.h>

然后运行命令:

gcc -o main main.c  -lsqlite3

命令运行完毕之后会生成一个叫main的可运行文件,输入:

./main

既能够看到结果。

#在编译时使用g++会报错: error: invalid conversion from ‘const void*’ to ‘const char*’

g++貌似对类型转换要求更为严格,不支持这种转换。

路过的大侠,知道如何用g++编译的,请不吝赐教......

转载于:https://www.cnblogs.com/gavanwanggw/p/6898926.html

sqlite学习笔记7:C语言中使用sqlite之打开数据库相关推荐

  1. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  2. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  3. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  4. Java快速入门学习笔记3 | Java语言中的表达式与操作符

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  5. Java快速入门学习笔记2 | Java语言中的基本类型

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  6. 【FPGA学习笔记】Verilog语言中的或(|和||)

    最近在学习过程中遇到if语句判断位宽不同的数相或的情况,就很迷惑,在询问同学后得到以下结论. 一.|和||的区别 |是按位或:将 a 的每个位与 b 相同的位进行相或 ||是逻辑或:a 或上 b,如果 ...

  7. Sqlite学习笔记(四)SQLite-WAL原理(转)

    Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然. WAL是 ...

  8. 2010年SQLite学习笔记之一

    2010年SQLite学习笔记之一 一.            如何获取SQLite最新版本 官方站点:http://www.sqlite.org/ 从http://www.sqlite.org/网站 ...

  9. Go语言开发学习笔记(持续更新中)

    Go语言开发学习笔记(持续更新中) 仅供自我学习 更好的文档请选择下方 https://studygolang.com/pkgdoc https://www.topgoer.com/go%E5%9F% ...

最新文章

  1. Spring源码分析【3】-SpingWebInitializer的加载
  2. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
  3. Xshell连接不上虚拟机Linux系统
  4. 全面开启线上参会报名!CNCC线上与现场参会者共赴技术盛宴!
  5. Google MapReduce
  6. 宝马戴姆勒、大众福特 自动驾驶圈又添新团伙
  7. css 首字下沉 错位,css+div错位问题的修复小结
  8. 【Spark】Spark 3.0 支持 event logs 滚动
  9. 读书笔记_打开量化投资的黑箱07
  10. 图像处理库Pillow
  11. 计算机桌面图片查看,电脑中查看微软bing缤纷桌面中图片信息方法
  12. 计算机网络:运输层(流量控制,拥塞控制,连接管理)
  13. 大都会人寿三周的工作回顾
  14. 全产业链落实循环减碳实践 宝马在华持续推进绿色转型
  15. 极值理论(二):阈值超越量与尾部估计
  16. MIMIC申请失败问题及其他问题答复
  17. python基础-运算符
  18. Linux的文件系统(磁盘标准分区)
  19. spatialreg | 空间计量模型的结果解读——直接效应和间接效应
  20. 国内外人工智能AI工具网站大全

热门文章

  1. Jupyter Notebook各种使用方法记录
  2. 语义分割--End-to-End Instance Segmentation with Recurrent Attention
  3. 目标检测--Enhancement of SSD by concatenating feature maps for object detection
  4. Ubuntu 14.04 opencv 2.4.9 安装
  5. ASP .NET Core Web MVC系列教程:使用ASP .NET Core创建MVC Web应用程序
  6. mysql自定义函数实现,自定义oracle中decode方法
  7. php判断邮箱是否合法性,php验证邮箱地址合法性
  8. redis面试全家桶
  9. mac-PHP mysqli连接报错 No such file or directory解决方案
  10. Python实战案例,requests模块,Python实现获取动态图表