• 数据库编程sqlite3库安装及使用


    数据库编程

    数据库的概念

    数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

    数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。

    数据库分类

    1. 常用的数据库
    2. 大型数据库 :Oracle
    3. 中型数据库 :Server是微软开发的数据库产品,主要支持windows平台 
    4. 小型数据库 : mySQL是一个小型关系型数据库管理系统。开放源码 
    5. SQLite基础
    6.  SQLite的源代码是C,其源代码完全开放。它是一个轻量级的嵌入式数据库。
    7.  SQLite有以下特性: 
    8.       零配置一无需安装和管理配置; 
    9.       储存在单一磁盘文件中的一个完整的数据库; 
    10.       数据库文件可以在不同字节顺序的机器间自由共享; 
    11.       支持数据库大小至2TB(1024= 1TB);足够小,全部源码大致3万行c代码,250KB; 
    12.         比目前流行的大多数数据库对数据的操作要快;
    13. 创建SQLite数据库:
    14. 手工创建 
    15.      使用sqlite3工具,通过手工输入SQL命令行完成数据库创建.
    16.      用户在Linux的命令行界面中输入sqlite3可启动sqlite3工具 
    17. 代码创建 
    18. 在代码中常动态创建数据库 在程序运行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序则会自动建立数据库,然后再打开数据库 
    虚拟机中sqlite3安装
    1. sqlite3 安装:
    2. 在线安装
    3.  1、设置能够上网
    4.  2、更新更新源
    5. apt-get update
    6.  3、安装软件及开发环境
    7.     apt-get install sqlite3 --->sqlite3数据库软件
    8.     apt-get install libsqlite3-dev --->sqlite3数据库开发支持库
    9.     apt-get install sqlite3-doc --->sqlite3数据库说明文档
    10. --------------------------------
    11.    apt-get install sqlitebrowser
    12. --->sqlite3数据库操作软件
    源码安装:
    1. tar xf sqlite-autoconf-3140100.tar.gz
    2. ./configure
    3. make
    4. sudo make install

    安装完成后,可以使用sqlite3 -version命令来测试是否安装成功

    1. $ sqlite3 -version 
    2. 3.14.1 2016-08-11
    基础SQL语句使用

    【腾讯文档】sqlite基础SQL语句使用

    sqlite基础SQL语句使用

    sqlite使用入门

    数据库 · 华清远见工作空间

    sqlite3的使用: 
    1. 使用sql系统命令,  创建一个学生库sqlite3 student.db

    1. 使用SQL命令 , 创建表; .tables 查看表 .schema 查看表结构

    1.  使用SQL命令 , 插入内容; insert into (表名) values(数据内容)

    1. 使用 SQL命令 , 查询内容;select * from stu 查看表中所有内容

    1. 使用SQK命令 , 设置主键 (只有在创建表时才能设置为主键:不能重复)

    1. 删除一个表 drop

    1. 打开图形化数据库

    创建查看

    sqlite3编程

    API接口文档

    官方文档:List Of SQLite Functions

    中文文档:SQLite 命令 - SQLite 中文版 - UDN开源文档

    1. 头文件:#include <sqlite3.h>
    2. 编译:gcc sqlite1.c -lsqlite3
    3. 1.int sqlite3_open(char *path, sqlite3 **db);
    4. 功能:打开sqlite数据库,如果数据库不存在则创建它
    5. path: 数据库文件路径
    6. db: 指向sqlite句柄的指针
    7. 返回值:成功返回SQLITE_OK,失败返回错误码(非零值)
    8. 2.int sqlite3_close(sqlite3 *db);
    9. 功能:关闭sqlite数据库
    10. 返回值:成功返回SQLITE_OK,失败返回错误码
    11. 返回值:返回错误信息
    12. 3.执行sql语句接口
    13. int sqlite3_exec(
    14.   sqlite3 *db, /* An open database */
    15. const char *sql, /* SQL to be evaluated */
    16. int (*callback)(void*,int,char**,char**), /* Callback function */
    17. void *arg, /* 1st argument to callback */
    18. char **errmsg                              /* Error msg written here */
    19. );
    20. 功能:执行SQL操作
    21. db:数据库句柄
    22. sql:要执行SQL语句
    23. callback:回调函数(满足一次条件,调用一次函数,用于查询)
    24.     再调用查询sql语句的时候使用回调函数打印查询到的数据
    25. arg:传递给回调函数的参数
    26. errmsg:错误信息指针的地址
    27. 返回值:成功返回SQLITE_OK,失败返回错误码
    28. 回调函数:
    29. typedef int (*sqlite3_callback)(void *para, int f_num,
    30. char **f_value, char **f_name);
    31. 功能:select:每找到一条记录自动执行一次回调函数
    32. para:传递给回调函数的参数(由 sqlite3_exec() 的第四个参数传递而来)
    33. f_num:记录中包含的字段数目
    34. f_value:包含每个字段值的指针数组(列值)
    35. f_name:包含每个字段名称的指针数组(列名)
    36. 返回值:成功返回SQLITE_OK,失败返回-1,每次回调必须返回0后才能继续下次回调
    37. 4.不使用回调函数执行SQL语句(只用于查询)
    38. int sqlite3_get_table(sqlite3 *db, const char *sql,
    39. char ***resultp, int *nrow, int *ncolumn, char **errmsg);
    40. 功能:执行SQL操作
    41. db:数据库句柄                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
    42. sql:SQL语句
    43. resultp:用来指向sql执行结果的指针
    44. nrow:满足条件的记录的数目(但是不包含字段名(表头 id name score))
    45. ncolumn:每条记录包含的字段数目
    46. errmsg:错误信息指针的地址
    47. 返回值:成功返回SQLITE_OK,失败返回错误码
    48. 5.返回sqlite3定义的错误信息
    49. char *sqlite3_errmsg(sqlite3 *db);

    创建查看

    sqlite3 数据库使用

    数据库简介

    1. 常用的数据库
    2. 大型数据库 :Oracle
    3. 中型数据库 :Server是微软开发的数据库产品,主要支持windows平台 
    4. 小型数据库 : mySQL是一个小型关系型数据库管理系统。开放源码 (嵌入式不需要存储太多数据)
    5. SQLite基础
    6. SQLite的源代码是C,其源代码完全开放。它是一个轻量级的嵌入式数据库。
    7. SQLite有以下特性: 
    8.       零配置一无需安装和管理配置; 
    9.       储存在单一磁盘文件中的一个完整的数据库; 
    10.       数据库文件可以在不同字节顺序的机器间自由共享; 
    11.       支持数据库大小至2TB(1024= 1TB);  嵌入式足够
    12.         足够小,全部源码大致3万行c代码,250KB; 
    13.         比目前流行的大多数数据库对数据的操作要快;
    14. 创建SQLite数据库:
    15. 1. 手工创建 
    16.      使用sqlite3工具,通过手工输入SQL命令行完成数据库创建.
    17. -----------------两种方式都会用得到,重点是代码创建--------------------
    18. 2. 代码创建 
    19. 在代码中常动态创建数据库 在程序运行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,
    20. 此时如果数据库并不存在,程序则会自动建立数据库,然后再打开数据库 
    虚拟中sqlite3安装

    源码安装:

    安装完成后,可以使用sqlite3 -version命令来测试是否安装成功

    基础SQL语句使用

    sql有两种命令:

            1. sqlite3系统命令          ---            .开头 

      2.  SQL命令                    ---           ;结尾 

            命令在 记事本 中详细展示,  群内已分享 sqlite3 sql语句.txt  

    sqlite3 API接口 

    List Of SQLite Functions

    常用接口会在 sqlite3 编程中具体展示

    sqlite3编程

    头文件:    #include 

    编译方式:   gcc  文件名.c  -lsqlite3

    1)打开或创建数据库

    1. 打开或创建数据库
    2. sqlite3_open
    3. 头文件: #include<sqlite3.h>
    4. 声明: int  sqlite3_open(char  *path,  sqlite3 **db);        
    5. 功能:打开sqlite数据库 (或新建数据库) 
    6. 参数:
    7. path: 数据库文件路径         
    8. db: 指向数据库句柄的指针 
    9.                              - 该二级指针指向一级指针地址,最终会存储打开的数据库的首地址   
    10. 返回值:成功返回0,失败返回错误码(非零值)
    11. 使用:  sqlite3 *db;
    12.   if(sqlite3_open("stu.db",&db) != 0)
    13.                 {
    14.                  fprintf(stderr,”err: %s\n”,sqlite3_errmsg(db));
    15.                  }//sqlite3自带的打印错误信息

    2)打印错误信息

    1. 打印错误信息
    2. sqlite3_errmsg
    3. 声明:const char *sqlite3_errmsg(sqlite3 *db); //bd;
    4. 功能:  打印错误信息
    5. 返回值:返回错误信息
    6. 使用: fprintf(stderr,"sqlite3_open failed  %s\n",sqlite3_errmsg(db));

    使用: 

    3)关闭数据库

    1. sqlite3_close
    2. 声明: int sqlite3_close(sqlite3 *db);
    3. 功能:关闭sqlite数据库
    4. 返回值:成功返回0,失败返回错误码
    5. 使用: sqlite3_close(db);

    4)执行sql语句

    1. 功能:执行sql语句;
    2. 原型:
    3. int sqlite3_exec(
    4.       sqlite3 *db, /* An open database */
    5. const char *sql, /* SQL to be evaluated */
    6. int (*callback)(void*,int,char**,char**),
    7. void *arg, /* 1st argument to callback */
    8. char **errmsg             /* Error msg written here */
    9. );
    10. 参数:
    11.     sqlite3 *db:指定要操作的数据库句柄指针;
    12. char *sql:指定要执行的sql语句;
    13. int (*callback)(void*,int,char**,char**):回调函数;
    14.  {callback(void *arg,int f_num,char ** f_value ,char **f_name)}
    15. void *arg:传递给回调函数的第一个参数;
    16. - 类似线程函数传参,需强转 - 不传参可以填NULL
    17. char **errmsg:该二级指针指向的以一级指针会存储错误信息的首地址;
    18. (定义一个一级指针就好了)
    19.          错误信息存储在静态存储区,存在着相应的源码,我们不用去深究
    20. 返回值:
    21.     成功,返回SQLITE_OK,其实就是0;
    22.     失败,返回e
    23.     rror_code,其实就是非0

    使用: 

    sqlite3_exec : 每查询到一行满足条件的信息, 都会调用一次callback函数显示结果

    1. int sqlite3_exec 的回调函数:(一般在执行 需要终端打印数据的时候使用)
    2. int callback(void *arg, int columns, char **column_text, \
    3. char **column_name);
    4. 功能:sqlite3_exec每找到一条满足条件的记录,就会执行一次回调函数。
    5. 参数:
    6. void *arg:sqlite3_exec的第四个参数传入;
    7. int columns:查询结果的列数;
    8. char **column_text:该二级指针指向的是一个数组,该数组是一个指针数组
    9.               数组中的元素都是char*类型的指针。指针指向查询结果的内容
    10. char **column_name:该二级指针指向的是一个数组,该数组是一个指针数组
    11.               数组中的元素都是char*类型的指针,指针指向查询结果的列名;
    12. 返回值
    13.     成功时候必须返回0,该返回值会返回给sqlite3_exec函数,
    14.     如果没有返回0,则sqlite3_exec会认为回调函数运行失败,从而导致sqlite3_exec运行失败; //记得加入 return 0;

    关于回调函数中, 如何打印查询的内容: 

    查询

    1. 只用于查询
    2. sqlite3_get_table()
    3. 声明: int sqlite3_get_table(sqlite3 *db, const char *sql,\
    4. char ***resultp, int *nrow, int *ncolumn, char **errmsg);
    5. 功能:执行SQL操作
    6. 参数:   db:数据库句柄   
    7.       sql:SQL语句
    8.       resultp:用来指向sql执行结果的指针 
    9. (该参数三级指针,肯定指向二级指针,所以定义二级指针变量)
    10.       nrow:该一级指针指向的内存空间中存储结果的行数,(一级指针指向变量地址)
    11.                               包括列名  id  name  sorce
    12.       ncolumn:该一级指针指向的内存空间中存储结果的列数 
    13.       errmsg:该二级指针指向的一级指针会存储错误信息首地址 
    14. 返回值:成功返回SQLITE_OK,失败返回错误码

  • 相关阅读:
    Android插件化学习之加载插件资源
    一文梳理NLP主要模型发展脉络
    ISE的FPGA程序加载与固化——Omapl138/TMS320C6748+FPGA核心板
    两例典型的C++软件异常排查实例分享
    激动人心,2022开放原子全球开源峰会报名火热开启
    安装Microsoft visual c++ 2022 X86 minimum runtime报错
    5.机器学习-十大算法之一岭回归(Ridge)算法原理讲解
    爬虫-浏览器自动化
    【AI】深度学习——循环神经网络
    JVM--基础--24.2--日志参数
  • 原文地址:https://blog.csdn.net/m0_74937538/article/details/134474625