第七天:gec6818开发板QT和Ubuntu中QT安装连接sqlite3数据库驱动环境保姆教程

sqlite3数据库简介

复制代码
帮助文档 SQL Programming 

大多数关系型数的操作步骤:
    1)连接数据库 
        多数关系型数据库都是C/S模型 (Client/Server)
        sqlite3是一个本地的单文件关系型数据库,同样也有"连接"的过程 

    2)操作数据库 
        作为程序员,对数据库最常见的操作 就是 增删改查

    3)关闭数据库 
        连接也是一种资源,用完记得释放 


Qt中 的数据库功能是放在一个单独的模块中,模块名为 sql  
    所以 如果需要使用Qt的数据库功能,需要在pro文件中 添加如下的指令: 
        QT  +=  sql  

Qt的sql模块中包含了大约10几个类型,常用的以下的三个:
    (1) QSqlDatabase 
        用于处理数据库的连接,包括 创建连接对象、设置连接属性、关闭连接

    (2) QSqlQuery
        用于执行SQL语句

    (3) QSqlError
        用于处理数据库错误,提供可读的错误信息 


连接数据库的典型代码:

    //初始化连接对象,使用静态函数addDatabase,参数是数据库类型 QSQLITE -- sqlite3
    db = QSqlDatabase::addDatabase("QSQLITE");

    //设置数据库名,建议带路径,如果存在,直接打开,如果不存在,则自带创建
    db.setDatabaseName("../test.db");

    //打开连接, 成功或者失败,给出相应的提示对话框
    bool ok = db.open();
    if( !ok )
    {
        QMessageBox::information( this, "tip", db.lastError().text() );
        return ;
    }
    QMessageBox::information(this, "tip", "connect db success! ");



执行SQL语句的典型代码:
    //创建用来执行SQL语句的对象
    QSqlQuery query( db );

    //准备SQL语句
    QString createsql = QString( "select username, passwd from t_user where username='%1';").arg(ui->lineEdit->text());
    qDebug() << createsql;

    //执行SQL语句
    if( !query.exec( createsql ) )
    {
        qDebug() << "select error : " << query.lastError().text();
        return ;
    }

    //QMessageBox::information( this, "提示", "select success! ");

    //遍历结果集
    while( query.next() )
    {
        //value用来获取一条记录(行)的列的值,可以使用索引(下标),也可以使用列名
        //value返回的是一个共用体,必须转换成该列的值真正的类型才来使用
        QString username = query.value(0).toString();
        QString passwd = query.value("passwd").toString();
        qDebug() << username << " -- " << passwd;
    }

Ubuntu和gec6818开发板一般都会自带sqlite3数据库驱动,所以不需要另外安装驱动,只需要安装sqlite3数据库即可。

1、sqlite3数据库的安装(Ubuntu中)

复制代码
    1)通过管理工具安装(APT)

        sudo apt-get install sqlite3 
        sudo apt-get install libsqlite3-dev
        sudo apt-get install sqlitebrowser 

    2)通过源码包进行安装 (安装包在文章底部下载)

        (1)将 源码包 拷贝到 家目录下 ( /home/china/ )
            cp  sqlite-snapshot-201803271513.tar.gz  /home/china/ 

        (2)解压 
            tar -zxvf  sqlite-snapshot-201803271513.tar.gz

        (3)进入源码目录 
            cd  sqlite-snapshot-201803271513 

        (4) 生成Makefile 
            ./configure 

        (5) 编译,生成可执行文件和库文件 
            make 

        (6) 安装数据库(实质上就是把生成的可执行文件和lib库文件 放到系统相应的路径下)
            sudo make install  

2、移植到开发板 ----------------(这里直接看第七步就行,我已经提供了编译好的文件,不行的话就自己按步骤执行)

复制代码
    sqlite3的移植: 
        移植原理是 在编译环境的机器上 交叉编译好 可执行文件和lib库文件 
                再把可执行文件和lib库文件 拷贝到开发板的 /bin  /lib  

    (1)将 源码包 拷贝到 家目录下 ( /home/china/ )
        cp  sqlite-snapshot-201803271513.tar.gz  /home/china/ 

    (2)解压 
        tar -zxvf  sqlite-snapshot-201803271513.tar.gz

    (3)进入源码目录 
        cd  sqlite-snapshot-201803271513 

    (4) 生成Makefile 
        ./configure  --host=arm-linux  --prefix=/home/china/sqlite3_arm  

                --host    指定目标主机的架构 
                --prefix  指定程序在本机的安装路径

    (5) 编译,生成可执行文件和库文件 
        make 

    (6) 安装数据库(实质上就是把生成的可执行文件和lib库文件 放到系统相应的路径下)
        sudo make install 

    (7) 把相应的文件 下载到 开发板上  (需要的文件在"数据库移植"压缩包内)

            /home/china/sqlite3_arm/bin/ 
                把 sqlite3 文件  --》 拷贝到开发板的 /bin 目录下 
                                    //记得加权限 chmod 0777 sqlite3

            /home/china/sqlite3_arm/lib/  
                libsqlite3.so 
                libsqlite3.so.0
                libsqlite3.so.0.8.6  
                    把 这3个文件 拷贝到开发板的 /lib 目录下 
                    (有链接文件 不能直接拷贝 )

                先压缩 再进行传输  
                    sudo tar -zcvf libsqlite3.tar.gz  libsqlite3.so.0.8.6 libsqlite3.so.0  libsqlite3.so

数据库移植压缩包已经打包上传了,有需要下载。

数据库移植

下面两个是要传到开发板的文件,第一个是Ubuntu中sqlite3数据库安装包

相关推荐
DFT计算杂谈7 小时前
vasp如何计算金属的铁电极化强度?
数据库
EterNity_TiMe_7 小时前
别让告警变成噪音:用Prometheus和Alertmanager搭一套可远程查看的监控系统
数据库·人工智能·ai·postgresql·prometheus·cpolar
jieyucx8 小时前
【系统安全铁律】解密 Linux 权限三色数字密码:chmod 最小化赋权与生产环境避坑指南
linux·安全·系统安全·权限·chmod·777
不超限8 小时前
Postgresql 数据库 自增字段,Vastbase 无效的问题
数据库
阿坤带你走近大数据8 小时前
Oracle新老SQL写法对比
数据库·sql·oracle
AOwhisky9 小时前
Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln
linux·运维·笔记·centos·云计算·文件系统
努力努力再努力wz9 小时前
【高性能网络库与HTTP Server系列】:基于主从 Reactor 模型实现高性能 C++ 网络库与 HTTP Server
开发语言·网络·数据结构·数据库·c++·网络协议·http
岑梓铭9 小时前
考研408《操作系统》复习笔记,第四章《4.2.2 文件操作、文件共享、文件保护》
linux·考研·操作系统·文件系统·408
HackTwoHub9 小时前
某单位 CMS 完整渗透链、SQL 注入→后台拿权→绕过宝塔 Waf 上线 shell
数据库·人工智能·sql·安全·网络安全·系统安全·安全架构
Mr.HeBoYan9 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk