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

2023-09-21 12:07:41

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数据库安装包

更多推荐

selenium环境+元素定位大法

selenium与webdriverSelenium是一个用于Web测试的工具,测试运行在浏览器中,就像真正的用户在手工操作一样。支持所有主流浏览器WebDriver就是对浏览器提供的原生API进行封装,使其成为一套更加面向对象的SeleniumWebDriverAPI。使用这套API可以操控浏览器的开启、关闭,打开网

Springboot登录验证的统一拦截处理

在进行Springboot项目开发的时候如何把每次请求都要验证的用户进行提取拦截统一处理背景如果不进行统一的拦截处理,其实这是一个非常痛苦的一件事情,因为每次用户请求你都要去进行用户的信息(用户信息存储在session中)的验证,代码重复,所以在本篇提供一个解决方案:定义一个拦截器,把请求都进行统一的处理,如果Sess

基于FPGA的图像白平衡算法实现,包括tb测试文件和MATLAB辅助验证

目录1.算法运行效果图预览2.算法运行软件版本3.部分核心程序4.算法理论概述5.算法完整程序工程1.算法运行效果图预览2.算法运行软件版本vivado2019.2matlab2022a3.部分核心程序`timescale1ns/1ps////Company://Engineer:////CreateDate:2023

全志H3 Linux编译尝试

全志H3Linux编译尝试主要参考:https://blog.csdn.net/qq_40731414/article/details/118684473部分内容介绍来自GPT,但是代码部分都会进行测试一、简介Linux编译的作用:生成可执行的内核映像:编译Linux内核的主要目的是从源代码生成一个可执行的内核映像(例

JDBC基本概念

什么是JDBCJDBC概念JDBC(JavaDataBaseConnectivity)是一套统一的基于Java语言的关系数据库编程接口规范。该规范允许将SQL语句作为参数通过JDBC接口发送给远端数据库,远端数据库接收到SQL语句后进行语法分析、验证,然后执行、响应。JDBC驱动在遵循统一的JDBC接口规范基础上,不同

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

AmazonLightsail是亚马逊云科技提供的一种易上手使用、月度价格经济实惠,并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择,可选择包含多种操作系统(Linux/Windows等)或操作系统加上典型应用进行快速配置并可根据需求进行包括CPU、内存、存储、传输遂率等多种机型的快速

嵌入式:驱动开发 Day7

作业:基于GPIO子系统,编写LED的驱动程序和应用程序驱动程序:myled.c#include<linux/init.h>#include<linux/module.h>#include<linux/cdev.h>#include<linux/fs.h>#include<linux/device.h>#include

嵌入式Linux驱动开发(I2C专题)(五)

I2C系统驱动程序模型参考资料:Linux内核文档:Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动程序示例:drivers/eeprom/at24.c1.I2C驱动程序的层次I2CCore

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设HR系列型NTP网络时钟系统是由我公司精心设计、自行研发生产的一套通过网口与母钟连接的子钟,接收母钟发送来的时间信息(信息内容:年、月、日、时、分、秒),将这些时间信息准确无误的显示出来。子钟带后备电池,停电时不显示

下拉框组件的封装(element ui )

目录实现思路创建通用的下拉选择框组件如何使用这个组件结语当你使用Vue.js构建Web应用时,封装可复用组件是提高开发效率和代码可维护性的关键之一。在这篇文章中,我们将探讨如何使用Vue.js来创建一个通用的下拉选择框组件,以及如何将它封装成一个可配置的组件。实现思路一级联动先从饿了么拿下拉列表数据处理提示名处理设定默

算法(三)

哈希表算法章节(1)Ascall码文章推荐给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。classSolution{publicbooleanisAnagram(Strings,Stringt){//先说明一下字母异位词的定义://两

热文推荐