linux高级编程(sqlite数据库调用)

数据库

1、分类: 大型    中型            小型
         ORACLE   MYSQL/MSSQL   SQLITE  DBII powdb
        关系型数据库        
2、名词:
        DB        数据库 select update database
        DBMS    数据库管理系统
        MIS     管理信息系统
        OA      办公自动化
3、嵌入式数据库:
        sqlite3    www.sqlite.org  www.kernal.org
    GNU   
    特点:
          1、开源  C语言开发
          2、代码量少 1万行左右,总大小10M以内
          3、文件型数据库,可以移动。
          4、数据容量最大 2T

4、sqlite3的安装: LTS long term support 
     1、在线安装 :
                sudo apt-get install sqlite3 (安装软件)
                sudo apt-get install libsqlite3-dev (安装sqlite3的库)

    
        gcc test.c -lsqlite3 -lpthread
        
    2、验证是否安装成功:
        sqlite3 --version
        sqlite3 --help

5、sqlite3的使用:
    启动sqlite3 
            sqlite3 xxx.db  
            ===>用sqlite3 来打开一个名称为test.db的本地数据库。

            出现如下提示符:表明数据库管理系统启动。
            sqlite> 

              退出数据库: 
               .q 命令
            
            注意:如果一直出现如下符号:
            ...>   
            则写';'结束。

1、系统维护命令:===> .help

出现所有相关的系统维护命令,都是以 "."开头。
        .database  列出当前库和系统中那个文件在关联
        .tables    列出当期数据库中的所有表
        .schema xxx 列出当前指定的xxx表结构
        .dump user   ===>导出数据库
        重定向
        sqlite3 test.db .dump > 123.sql
        sqlite3 xxx.db < test.sql ===>导入数据库

2、标准SQL语句:===》通用语法在其他平台可以直接使用。

注意:所有的sql语句都以';'结尾。
        创建一个表:
        create table  表名(表字段1,表字段2,...);
        eg: create table user(id,name,age);         char 
        注意:以上表的表字段,支持如下数据类型。int text real blob
              默认是text类型。char;  //text不限制长度,char限制长度,最大为1kb

                                                  //这里的char是字符串的意思
        create table 表名 (表字段 类型,表字段 类型,。。。。);
        eg:
        create table user(id int  ,name char,age int);

        删除一个表:
        drop table  表名;
        eg:drop table user;

 数据库常规操作: 增加 删除 修改 查询

增:

向表中增加数据:
       insert into 表名 (字段名称 ) values (值名称);
       eg:insert into user (id,age) values (1,10);

       insert into user values(3,"wang",11); //省略user的字段名称
       insert into user (age) values ( 12);  //不省略

查:

查询表中的数据:
       select 列名 from 表名  条件;
       eg:select * from user ;
           select id,name from user;
           select id,name from user where not  age <30
           where name   like '三一'   % _ 通配符
           (like,字符串专用)
           (%省略没限制)
           (下划线,省略一个字符)
                                                                   asc
        select *from user where age>20 or age<50 order by age desc limit 2 ;
         &&  ||(可写为 and 和 or)

改:

       修改表中数据:
       update 表名 set 表字段 = 值  满足条件:
       like:给字符串用的,模糊查找
       eg: update user set id = 1 where name = 'li';
       update user set id = 1 where name = "li" and passwd = "123";
       update user set id = 2 where name = "li" or  name = "zhao";

删:

 删除表中数据:
       delete from 表名  满足条件:
       eg:delete from user ;  ///删除表中所有数据
              delete from user where id  = 1; ///删除id=1 的数据;
           delete from user where id =1 and name = "zhang";
           delete from user where id = 1 or id  = 2;

(select * from user,delate from user(where),insert into user value)

sqlite3 数据库编程

1、需要的头文件
        sqlite3.h

2、编译过程
        -lsqlite3(加入sqlite3头文件)

3、编程框架:
打开数据库 ==》读写数据库(增,删,改,查) ==》关闭数据库

sqlite3.h

sqlite3_open()

3.1 打开数据库: sqlite3_open
    int sqlite3_open(char * path,sqlite3 ** db);
    功能:打开指定path路径+文件名称的数据库,并将
          打开的地址指向db变量的句柄。
    参数:path 要打开的数据库路径+名称
          db  要打开的数据库地址指针
    返回值:成功  0
            失败  -1;

sqlite3_close()

3.2 关闭数据库: sqlite3_close
    int sqlite3_close(sqlite3 *db);
    功能:关闭指定的数据库
    参数:要关闭的数据库地址
    返回值:成功  0
            失败  -1;

sqlite3_exec()

int sqlite3_exec(sqlite3 *db,char *sql,callback fun,
                    void * arg,char ** errmsg);

    功能:在db数据库上执行sql 非查询语句。
          并将结果返回。
    参数:db 要执行sql的数据库
          sql  要执行的非查询sql语句。
          fun  如果该函数要执行查询语句,则该回调函数
                 用来回收查询的结果。
          arg  回调函数的参数,如果没有回调函数则该参数为NULL;
          errmsg  执行过程中的错误信息。
    返回值:执行成功  0
            失败  非0 ;

int fun(void *arg ,int f_num,char ** f_value,
            char ** f_name)
    
    功能:该函数用于sqlite3_exec执行select语句的
          结果集返回数据。
    参数:arg 由sqlite3_exec传入的参数
          f_num 执行该命令所返回测结果集的字段个数。
          f_value 查询结果集中的字段的值。
          f_name  查询结果集中的字段的名称。
    返回值:成功 0
            失败 非0
注:该回调函数正常退出必须有返回0,否则可能导致查询异常。
    (如果sqlite3_exec()回调返回非零,则sqlite3_exec()例程返回SQLITE_ABORT,
    (SQLITE_ERROR中的一个错误,请求中止)而不再次调用回调,也不运行任何后续的SQu语句。)

   

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

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

相关文章

tessy 集成测试:小白入门指导手册

目录 1,创建集成测试模块且分析源文件 2,设置测试环境 3,TIE界面设置相关函数 4,SCE界面增加用例 5,编辑数据 6,用例所对应的测试函数序列 7,添加 work task 函数 8,为测试场景添加函数 9,为函数赋值 10,编辑时间序列的数值 11,执行用例 12,其他注意事项…

《昇思25天学习打卡营第2天|初学教程/快速入门》

文章目录 快速入门处理数据集网络构建模型训练保存模型加载模型 快速入门 通过MindSpore的API来快速实现一个简单的深度学习模型。 MindSpore 是华为推出的一个全场景深度学习框架&#xff0c;它旨在实现易开发、高效执行和全场景覆盖的目标。这个框架支持云、边缘以及端侧场…

零基础STM32单片机编程入门(十四) DS18B20温度传感器模块实战含源码

文章目录 一.概要二.DS18B20主要性能参数三.DS18B20温度传感器内部框图四.DS18B20模块原理图五.DS18B20模块跟单片机板子接线和通讯时序1.单片机跟DS18B20连接示意图2.单片机跟DS18B20通讯流程与时序3.通讯流程中的9个数据字节内容格式4.温度数据寄存器LSB/MSB格式 六.STM32单片…

ROS2入门到精通—— 1-3 ROS1移植到ROS2系统梳理

ROS2同一功能包只能同时包含Python或者C一种 1 ROS1 && ROS2 CMakeList.txt ROS1中CMakeLists.txt架构如下&#xff1a; cmake_minimum_required() #CMake的最低版本号project() #项目名称find_package() #找到编译需要的其他CMake/Catkin package catkin_py…

【HarmonyOS】鸿蒙中如何获取用户相册图片?photoAccessHelper.PhotoViewPicker

【HarmonyOS】鸿蒙中如何获取用户相册图片&#xff1f;photoAccessHelper.PhotoViewPicker 前言 有同学私聊我说&#xff0c;之前的博客文章提到的没有HarmonyOS白名单帐号&#xff0c;如何在OpenHarmony Gitee开发仓里学习API接口。需要注意一个点&#xff0c;默认看到的文档…

图、图的遍历、最小生成树、最短路径

0、图的概念 **图:**是由顶点集合及顶点间的关系组成的一种数据结构&#xff1a;G (V&#xff0c; E)&#xff0c;其中&#xff1a; 顶点集合V {x|x属于某个数据对象集}是有穷非空集合&#xff1b;边的集合E {(x,y)|x,y属于V}或者E {|x,y属于V && Path(x, y)}是顶…

浅学三次握手

数据要完成传输&#xff0c;必须要建立连接。由于建立TCP连接的过程需要来回3次&#xff0c;所以&#xff0c;将这个过程形象的叫做三次握手。 结合上面的图来看更清楚。 先说三次握手吧&#xff0c;连接是后续数据传输的基础。就像我们打电话一样&#xff0c;必须保证我和对方…

在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的实时监控和性能瓶颈的快速定位一、数据实时监控的重要性二、PostgreSQ…

shell,重定向与管道符号

文章目录 一&#xff0c;什么是shell二&#xff0c;shell脚本和作用1. shell脚本2. 作用 三&#xff0c;shell脚本的构成内容四&#xff0c;创建和运行Shell脚本五&#xff0c;重定向与管道操作1. 交互式硬件设备2. 重定向操作概览表3. 管道操作 一&#xff0c;什么是shell sh…

Matlab 判断直线上一点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 判断一个点是否位于一直线上有很多方法,这里使用一种很有趣的坐标:Plucker线坐标,它的定义如下所示: 这个坐标有个很有趣的性质,我们可以使用Plucker坐标矢量构建一个Plucker矩阵: 则它与位于对应线上的齐次点…

排序(三)——归并排序(MergeSort)

欢迎来到繁星的CSDN&#xff0c;本期内容主要包括归并排序(MergeSort)的实现 一、归并排序的主要思路 归并排序和上一期讲的快速排序很像&#xff0c;都利用了分治的思想&#xff0c;将一整个数组拆成一个个小数组&#xff0c;排序完毕后进行再排序&#xff0c;直到整个数组排序…

文章管理小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;作者管理&#xff0c;文章管理&#xff0c;文章分类管理&#xff0c;论坛&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;文章&#xff0c;论坛&#xff0c;我的 开发系统…

代码随想录算法训练营第五十四天|99.岛屿数量 深搜、广搜、100.岛屿的最大面积

99.岛屿数量 题目链接&#xff1a;99.岛屿数量 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 深搜 思路&#xff1a; 遍历网格&#xff0c;发现岛屿&#xff1a;我们需要遍历整个二维网格&#xff0c;检查每一个位置上的元素。如果在遍历过程中遇到陆地&#xff08;…

计网(1.1~1.4)

1.1计算机网络在信息时代的作用 21世纪的重要特征数字化、网络化和信息化 有三类网络&#xff1a;电信网络、有线电视网络和计算机网络 互联网两个重要基本特点&#xff0c;即连通性和共享 1.2因特网概述 &#xff08;1&#xff09;网络、互联网和互连网 网络:由若干结点和连接…

企业全历史行为数据 让你对竞争对手的一切清清楚楚

关于商业竞争&#xff0c;在刚进入信息时代的那些年&#xff0c;人们说“现代商战就是信息战”&#xff0c;强调用非对称的或者更快获得的信息来赢得竞争&#xff1b;近些年进入大数据时代&#xff0c;人们又说“得数据者得天下”&#xff0c;发现“数据算法”有很多妙用&#…

2024 Q1:AVP时代下全球XR头显市场动态与展望

随着苹果Vision Pro&#xff08;AVP&#xff09;的发布&#xff0c;空间计算时代正式拉开序幕&#xff0c;全球扩展现实&#xff08;XR&#xff09;产业迎来新的发展机遇与挑战。尽管苹果的加入激发了市场活力&#xff0c;但2024年第一季度的XR头显市场却呈现出复杂多变的格局&…

压缩视频的最佳方法,视频压縮大小不影响画质

在数字媒体时代&#xff0c;视频已成为我们记录生活和传递信息的重要方式。但随着视频分辨率的提升和拍摄时长的增加&#xff0c;视频文件的大小也随之“膨胀”。大视频文件不仅占用大量存储空间&#xff0c;还在分享和传输过程中造成不便。如何在保证画质的前提下&#xff0c;…

《基于 LatentFactor + Redis + ES 实现动态药房分配方法》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

LabVIEW液压数据采集测试系统

液压系统是装载机的重要组成部分&#xff0c;通过液压传动和控制实现各项作业功能&#xff0c;如提升、倾斜、转向等。液压系统的性能直接影响装载机的作业效率和稳定性。为了保证装载机液压系统的正常运行和优化设计&#xff0c;需要对其进行数据采集和测试。本文介绍了一套基…

昇思20天

K近邻算法实现红酒聚类 1. K近邻算法&#xff08;KNN&#xff09; 基本概念&#xff1a;用于分类和回归的非参数统计方法 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;最初由 Cover和Hart于1968年提出(Cover等…