【QT】嵌入式数据库

目录

 

一、sqlite优点

二、Linux命令行下使用数据库

三、C++中使用数据库

四、QT中使用数据库


一、sqlite优点

1、零配置:SQlite3不用安装,不用配置,不用启动,关闭或者配置数据库实例。当系统崩溃后不用做任何恢复操作,再下次使用数据库的时候自动恢复

2、紧凑:SQLite是被设计成轻量级,自包含的。一个头文件,一个lib库,你就可以使用关系数据库了,不用任何启动任何系统进程。一般来说,整个SQLITE库小于225KB。

3、可移植:它是运行在Windows,Linux,BSD,Mac OSX和一些商用Unix系统,比如Sun的Solaris,IBM的AIX,同样,它也可以工作在许多嵌入式操作系统下,比如QNX,VxWorks,PalmOS, Symbin和Windows CE。

SQLite下载地址:https://www.sqlite.org/download.html

        

源码文件如下:

        

二、Linux命令行下使用数据库

1、编译sqlite3

           

2、测试数据库

          

        .dump   --查看表结构

        .quit       --退出

       .show     --显示

      .tables  --显示所有的表

 

3. SQL语句--数据库操作(创建, 插入,删除,查询数据, 更新...)

(1)创建表格语句  create table name(字段1 类型1 , 字段2 类型2 ...);

(2)插入数据语句 insert  into 表名 value(数据1, 数据2, 数据3) ;

(3)查询表格数据 select (字段名--多个用逗号隔开,如果是所有就用*) from 表名;

(4)条件查询select (字段名--多个用逗号隔开,如果是所有就用*) from 表名 where 条件

(5) 更新数据 update 表名 set 字段名=value,字段名=value  where 条件;

(6) 删除数据 delete  from 表名;  ---删除整个表的数据

         删除数据 delete  from 表名 where 条件;  

 

 

三、C++中使用数据库

使用sqlite3里面的API接口编程

操作流程:

1.打开数据库 sqlite3_open

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

参数:const char *filename  --打开数据库文件名称比如demo.db

       sqlite3 **ppDb --存储打开数据库后的句柄

返回值: 成功返回SQLIET_OK

2.执行sql语句 sqlite3_exec

int sqlite3_exec( sqlite3*,    const char *sql,     int (*callback)(void*,int,char**,char**)  ,void *,   char **errmsg );

参数:sqlite3*,  句柄

          const char *sql, 执行sql语句

           int (*callback)(void*,int,char**,char**), 查询回调函数

           void *, 传给回调函数第一个参数

          char **errmsg   存储错误

返回值: 成功返回SQLIET_OK

int (*callback)(void*,int,char**,char**), 查询回调函数

         void * ---sqlite3_exec传入

          nt ---数据列数

          char**---数据内容

          char**---数据名称

int callback(void*argint col ,char** valuechar** name)

{

}

3.关闭数据库sqlite3_close

int sqlite3_close(sqlite3*);

返回值: 成功返回SQLIET_OK

#include <iostream>
#include "sqlite3.h"

using namespace std;

int main()
{
    //打开数据库
    sqlite3 *ppdb = NULL;
    int ret  = sqlite3_open("demo.db",&ppdb);
    if(ret != SQLITE_OK)
    {
        cout<<"open error"<<endl;
    }

    //创建表格
    const char * sql = "create table my(id int , name text)";
    ret = sqlite3_exec(ppdb, sql,NULL, NULL,NULL);
    if(ret != SQLITE_OK)
    {
        cout<<"exec error"<<endl;
    }

    //关闭数据库
    sqlite3_close(ppdb);
    return 0;
}

四、QT中使用数据库

在Qt工程文件中添加QT += sql

QSqlDatabase

QSqlQuery

QSqlRecord

QSqlResult

QSqlError

QSqlTableModel

1、创建一个QSqlDataBase对象---添加数据库驱动()

QSqlDatabase addDatabase(驱动, 连接名);

如果添加数据库驱动设置了连接名称, 那么后面操作数据库的时候要指定对应的db

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "HD");
    //设置数据库名称
    db.setDatabaseName("demo.db");
    if(!db.open())
    {
        qDebug()<<"open error";
    }

2、操作数据(创建表格)

    QString sql = QString("create table %1(id integer primary key, name text)").arg(ui->tableNameEdit->text());
    QSqlQuery query(QSqlDatabase::database("HD"));
    query.exec(sql);
发布了64 篇原创文章 · 获赞 82 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_40602000/article/details/98652514