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

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

时间:2024-07-15 22:26:44浏览次数:11  
标签:sqlite name 数据库 编程 db user linux sqlite3 id

数据库

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语句。)

   

标签:sqlite,name,数据库,编程,db,user,linux,sqlite3,id
From: https://blog.csdn.net/qq_54094530/article/details/140450116

相关文章

  • 内存管理-19-vmlinux.lds.S分析
    基于msm-5.4一、简介链接器主要任务是将符号引用解析到符号定义上,将多个目标文件(.o)和库文件合并成为一个可执行文件或者动态链接库,生成符号表,并对程序代码做最后的检查和优化。这个链接脚本在Linux内核里就是vmlinux.lds.S文件。vmlinux.lds.S编译后会在out/target目录......
  • 高质量C/C++编程指南总结(五)—— 常量
    尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串。在C++程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共......
  • python网络编程---TCP协议进行
        在这里简单实现一个TCP服务器,用于监听来自客户端的连接,接收客户端发送的消息,并向客户端发送响应消息。下面我将详细解释这个代码的工作原理和各个部分的作用。    首先建立一个客户端(client),一个服务端(server),在客户端进行连接到运行在本地机器(IP地址为127.......
  • Linux查看某个进程的环境变量,以及重定向后的输出
    1.查看环境变量根据进程pid看,以121927号进程为例:cat/proc/121927/environ|tr'\0''\n'每个环境变量都以'\0'结束,直接cat会不方便查看,将'\0'替换为'\n'可以方便查看。注意,tr后必须加单引号,不然参数会被shell转义为0和n。或者可以:cat/proc/121927/environ|tr\\0\\n......
  • 数据库:编程(打开、操作(增、删、改、查)、关闭)
    一、需要的头文件sqlite3.h二、编译过程gccxxx-lsqlite3三、编程框架打开数据库==》读写数据库(增,删,改,查)==》关闭数据库3.1打开数据库:sqlite3_openintsqlite3_open(char*path,sqlite3**db);   功能:打开指定path路径+文件名称的数据库,并将打开的地址......
  • Linux的文件查找吉计划任务练习题
    #练习1 使用ls查看/etc/目录下的所有文件信息[root@gym~]#ls/etc/#练习2 使用ls查看/etc/⽬录下名包含“a”字⺟的⽂件或者⽬录信息[root@gym~]#ls/etc/|grep'a'#练习3 使用ls查看/etc/目录下以“.conf”结尾的文件信息[root@gym~]#ls/etc/*.conf#......
  • Windows 注册表编辑器(regedit)的演变和发展主要是由 Microsoft Windows 操作系统的设计
    Windows注册表编辑器(regedit)的演变和发展主要是由MicrosoftWindows操作系统的设计和需求驱动的。下面是大致的演化过程:需求和设计:在早期的Windows系统中,配置信息分散存储在各种配置文件和INI文件中,管理起来不够方便。为了统一管理系统配置信息,并提高系统的灵活性和可维......
  • Epson机器人编程初级阶(三)
    TCP通讯案例1.调用函数'TCP通讯案例GlobalStringX1$,Y1$,Z1$,U1$'定义全局变量FunctionTCP1Callinition'初始化程序,打开电源设置速度等CallNetConnet'建立连接DoCallData'调用接收数据函数GoXY(Val(X1$),Val(Y1$),Val(Z1......
  • Linux——添加默认路由(能ping通本网段,但是ping不通其他网段)
    2024/07/151.问题描述2.问题处理3.其他问题1.问题描述昨天服务器突然断电,今天重启后,网络出了些问题,具体情况如下:能ping通本机IPping不通网关ping不通本网段其他IP地址ping不通其他网段地址2.问题处理vi/etc/sysconfig/network-scripts/ifcfg-ens32检查了网卡配置文......
  • Epson机器人编程初级阶(二)
    Wait等待时间与信号控制,时间默认单位是秒WaitSw(0)=On:等待输入0变为On状态Wait60.5:等待60.5秒后执行WaitSw(0)=OffAndSw(1)=On:等待输入0变为Off并且出入1变为On状态WaitMemsw(0)=OnOrMemsw(1)=On:等待储存位0变为啥On或存储位1变为On状态Wait1;On1:等待1......