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

数据库编程

数据库的概念

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

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

数据库分类

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

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

$ sqlite3 -version 
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开源文档

头文件:#include <sqlite3.h>
编译:gcc sqlite1.-lsqlite31.int sqlite3_open(char  *path, sqlite3 **db);功能:打开sqlite数据库,如果数据库不存在则创建它
path: 数据库文件路径
db: 指向sqlite句柄的指针
返回值:成功返回SQLITE_OK,失败返回错误码(非零值)2.int sqlite3_close(sqlite3 *db);功能:关闭sqlite数据库
返回值:成功返回SQLITE_OK,失败返回错误码返回值:返回错误信息3.执行sql语句接口
int sqlite3_exec(
  sqlite3 *db,                                  /* An open database */const char *sql,                           /* SQL to be evaluated */int (*callback)(void*,int,char**,char**),  /* Callback function */void *arg,                      /* 1st argument to callback */char **errmsg                              /* Error msg written here */
);功能:执行SQL操作
db:数据库句柄
sql:要执行SQL语句
callback:回调函数(满足一次条件,调用一次函数,用于查询)
    再调用查询sql语句的时候使用回调函数打印查询到的数据
arg:传递给回调函数的参数
errmsg:错误信息指针的地址
返回值:成功返回SQLITE_OK,失败返回错误码回调函数:
typedef int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);功能:select:每找到一条记录自动执行一次回调函数
para:传递给回调函数的参数(由 sqlite3_exec() 的第四个参数传递而来)
f_num:记录中包含的字段数目
f_value:包含每个字段值的指针数组(列值)
f_name:包含每个字段名称的指针数组(列名)
返回值:成功返回SQLITE_OK,失败返回-1,每次回调必须返回0后才能继续下次回调4.不使用回调函数执行SQL语句(只用于查询)
int sqlite3_get_table(sqlite3 *db, const  char  *sql, char ***resultp,  int *nrow,  int *ncolumn, char **errmsg);功能:执行SQL操作
db:数据库句柄                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
sql:SQL语句
resultp:用来指向sql执行结果的指针
nrow:满足条件的记录的数目(但是不包含字段名(表头 id name score))
ncolumn:每条记录包含的字段数目
errmsg:错误信息指针的地址返回值:成功返回SQLITE_OK,失败返回错误码5.返回sqlite3定义的错误信息
char *sqlite3_errmsg(sqlite3 *db);

创建查看

sqlite3 数据库使用

数据库简介

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

虚拟中sqlite3安装

源码安装:

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

基础SQL语句使用

sql有两种命令:

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

  2.  SQL命令                    ---           ;结尾 

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

sqlite3 API接口 

List Of SQLite Functions

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

sqlite3编程

头文件:    #include <sqlite3.h>

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

1)打开或创建数据库

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

2)打印错误信息

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

使用: 

3)关闭数据库

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

4)执行sql语句

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

使用: 

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

int sqlite3_exec 的回调函数:(一般在执行 需要终端打印数据的时候使用) int callback(void *arg, int columns, char **column_text, \char **column_name);功能:sqlite3_exec每找到一条满足条件的记录,就会执行一次回调函数。参数:void *arg:sqlite3_exec的第四个参数传入;int columns:查询结果的列数;char **column_text:该二级指针指向的是一个数组,该数组是一个指针数组
              数组中的元素都是char*类型的指针。指针指向查询结果的内容char **column_name:该二级指针指向的是一个数组,该数组是一个指针数组
              数组中的元素都是char*类型的指针,指针指向查询结果的列名;返回值

    成功时候必须返回0,该返回值会返回给sqlite3_exec函数,
    如果没有返回0,则sqlite3_exec会认为回调函数运行失败,从而导致sqlite3_exec运行失败;  //记得加入 return 0;

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

查询

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无需添加udid,ios企业证书的自助生成方法

我们开发uniapp的app的时候&#xff0c;需要苹果证书去打包。 假如申请的是个人或company类型的苹果开发者账号&#xff0c;必须上架才能安装&#xff0c;异常的麻烦&#xff0c;但是有一些app&#xff0c;比如企业内部使用的app&#xff0c;是不需要上架苹果应用市场的。 假…

wpf devexpress 开始点

此教程示范如何创建registration form和DevExpress WPF Data Editors 开始点 此项目源码 这个解决方案包含几个项目-每一个项目对应一个教程 RegistrationForm.BaseProject项目是基于工作的解决方案。项目包含三个视图&#xff1a;MainView&#xff0c;RegistraionView&…

4月2日-3日·上海 | 3DCC 第二届3D细胞培养与类器官研发峰会携手CGT Asia 重磅来袭

类器官&#xff08;Organoids&#xff09;作为干细胞研究领域最重要的成果之一&#xff0c;在基础医学研究、转化医学及药物研发领域展现出巨大的应用潜力&#xff0c;特别是在精准医疗以及药物安全性和有效性评价等方向凭借其先天优势引起了极大的市场关注&#xff0c;成为各大…

盘点52个Python各行各业管理系统源码Python爱好者不容错过

盘点52个Python各行各业管理系统源码Python爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 源码下载链接&#xff1a;https://pan.baidu.com/s/1pcP-94UY_57sAd2oDB3i6Q?pwd8888 提取码&#xff1a;8888 项目名…

九. Linux网络命令

网络命令write 网络命令wall 网络命令ping 首先&#xff0c;ping程序会向域名服务器(DNS)发送请求&#xff0c;解析域名www.baidu.com的IP地址。DNS返回域名的一个别名www.a.shifen.com以及对应的IP地址183.2.172.185。之后ping程序开始向这个地址发送请求报文&#xff0c;每1s…

CSS滚动捕获 scroll-snap-align

CSS滚动捕获 scroll-snap-align 看到 align, 就条件反射想到对齐方式, 嗯猜对了. 不过要先看一下若干名词介绍 scroll-snap-align 指定了盒子的 snap position, 即盒子 snap area 和滚动容器的 snapport 的对齐方式. 这个属性是定义在滚动元素上, 而不是滚动容器上 语法 这个…

新材料企业ERP有几种?能帮助企业解决哪些问题

在我们的生活当中会遇到各种各样的新材料&#xff0c;这些新材料对应不同的制造工艺、品质检验标准、生产工序、制造设备等。有些新材料企业的营销渠道不止一个&#xff0c;各个营销平台的经营策略和商品维护流程各不相同&#xff0c;而这也使得日常的管理工作量较大。 经过多…

医院数字化LIS(检验信息系统)源码

临床检验信息管理系统&#xff08;LIS&#xff09;是利用计算机连接医疗设备&#xff0c;通过计算机信息处理技术&#xff0c;将医院检验科或实验室的临床检验数据进行自动收集、存储、处理、提取、传输和交换&#xff0c;满足所有授权用户的功能需求。 一、系统概述 1.LIS&am…

和鲸 ModelWhale 入驻华为蓝鲸应用商城,助力大模型时代 AI 赋能应用落地

近日&#xff0c;和鲸旗下数据科学协同平台 ModelWhale 成功入驻华为蓝鲸应用商城&#xff0c;这也是继和鲸与华为发布数据分析建模实训联合解决方案后的再度携手&#xff0c;标志着双方的合作进入更全面、更深入的新阶段。 华为蓝鲸应用商城是华为数据存储面向客户提供的一站…

【OpenAI开发者大会,全新大模型它来了,价格大跌...】

继今年春天发布 GPT-4 之后&#xff0c;OpenAI 又创造了一个不眠夜。 过去一年&#xff0c;ChatGPT 绝对是整个科技领域最热的词汇。 北京时间 11 月 7 日凌晨 02:00&#xff0c;OpenAI 的首次 DevDay 开发者日活动正式开始。Keynote 主论坛环节由 Sam Altman 主讲并在油管现…

在线 sha1 加密

ttmd5 http://www.ttmd5.com/hash.php?type5 qqxiuzi https://www.qqxiuzi.cn/bianma/sha-1.htm jb51 http://tools.jb51.net/password/sha_encode

Seaborn 回归(Regression)及矩阵(Matrix)绘图

Seaborn中的回归包括回归拟合曲线图以及回归误差图。Matrix图主要是热度图。 1. 回归及矩阵绘图API概述 seaborn中“回归”绘图函数共3个&#xff1a; lmplot&#xff08;回归统计绘图&#xff09;&#xff1a;figure级regplot函数&#xff0c;绘图同regplot完全相同。(lm指lin…