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

news2025/1/12 20:52:14

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

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

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

相关文章

windows下gvim的配置

一、vim配置文件 "查看自己的vimrc所在的目录 "在命令模式下 :echo $MYVIMRC"打开自己的vimrc文件 "在命令模式下 :e $MYVIMRC 二、排版 "查看自己当前的字体及大小 "在命令模式下 :set guifont?"设置默认的字体为仿宋_GB2312&#xff…

蓝桥杯打卡Day12

文章目录 接龙数列冶炼金属 一、接龙数列OJ链接 本题思路:本题是一道经典的dp问题&#xff0c;设第i个数的首位数字是first&#xff0c; 末位数字是last。因为第i个数只可能加到一个以first结尾的接龙数列中使得这个接龙数列长度加1并且结尾数字变成last.所以状态转移方程为d…

让Mac菜单栏变得更加美观整洁——Bartender 5

Bartender 5是一款Mac电脑上的菜单栏图标管理软件&#xff0c;能够帮助您把菜单栏上的图标整理得更加美观、整洁和易于使用。如果您的菜单栏上充斥着许多图标&#xff0c;导致视觉上很不舒适和疲劳&#xff0c;那么Bartender 5就是解决这一问题的最佳选择&#xff01; Bartend…

智能热水器丨打造智能家居新体验

随着科学技术的不断发展&#xff0c;智能电器越来越被大众所采纳&#xff0c;如智能扫地机&#xff0c;智能洗衣机&#xff0c;智能微波炉等等&#xff0c;越来越智能的电器为人们的生活带来了许多便利。以往的热水器一般都是只有按键/机械的控制方式&#xff0c;没有其他无线控…

Python绘制X-bar图和R图 | 统计过程控制SPC

X-bar图和R图是用于统计过程控制&#xff08;SPC&#xff09;的两种常用工具&#xff0c;用于监测过程的平均值和范围&#xff08;变异性&#xff09;。这些图有助于识别过程中的变化和异常&#xff0c;以便及时采取纠正措施。 **X-bar图&#xff08;平均值控制图&#xff09;…

Gitee使用用户名密码登录一直错误/IDEA连接gitee仓库密码错误

天坑,注册的时候名字带了大写,用户名自动给你变成小写 真正的用户名在个人主页里面看,是后面的字符,才是真正的用户名.排查了一个小时密码问题,真的坑

使用扩展运算符(...)合并数组

在项目开发过程中&#xff0c;有一个需求&#xff0c;需要制作一个带有标题的表格&#xff0c;如下所示&#xff1a; 和后端开发沟通时&#xff0c;后端计划返回三个数组&#xff0c;标题写死。所以我需要做的就是把数组合并&#xff0c;然后在三个数组之前增加标题。这里我采用…

入行软件测试多年的心得体会

成为xx一员测试已经有1年半了&#xff0c;一直没有真正坐下来花些时间将自己的思路理清一下。刚好近期公司落地了OKR&#xff0c;给自己制定了OKR之后思路终于开始清晰起来&#xff0c;朦朦胧胧地开始看清了远方的路&#xff0c;麻着胆子分析一下自己&#xff0c;毕竟摸黑走路的…

CIIS 2023丨聚焦文档图像处理前沿领域,合合信息AI助力图像处理与内容安全保障

近日&#xff0c;2023第十二届中国智能产业高峰论坛&#xff08;CIIS 2023&#xff09;在江西南昌顺利举行。大会由中国人工智能学会、江西省科学技术厅、南昌市人民政府主办&#xff0c;南昌市科学技术局、中国工程科技发展战略江西研究院承办。本次大会重点关注AI大模型、生成…

搭建Flink集群、集群HA高可用以及配置历史服务器

Flink集群搭建 Flink集群搭建集群规划下载并解压安装包修改集群配置分发安装目录启动集群访问Web UI Flink集群HA高可用概述集群规划配置flink配置master、workers配置ZK分发安装目录启动HA集群测试 Flink参数配置配置历史服务器概述配置启动、停止历史服务器提交一个Job任务查…

如何选择适合你的隧道爬虫ip?

隧道爬虫IP在保护你的网络隐私和提供安全的数据传输方面起着关键作用。然而&#xff0c;在众多的商家中选择适合自己的并非易事。本文将分享一些关键的考虑因素&#xff0c;帮助你选择适合你的隧道爬虫IP商家。无论你是个人用户还是企业客户&#xff0c;相信这些指南都能帮助你…

单元测试 —— JUnit 5 参数化测试

JUnit 5参数化测试 目录 设置我们的第一个参数化测试参数来源 ValueSourceNullSource & EmptySourceMethodSourceCsvSourceCsvFileSourceEnumSourceArgumentsSource参数转换参数聚合奖励总结 如果您正在阅读这篇文章&#xff0c;说明您已经熟悉了JUnit。让我为您概括一下…

家居服务小程序发展指南

随着互联网的快速发展&#xff0c;越来越多的企业开始关注并投资于线上平台的建设&#xff0c;以满足用户的多样化需求。家居服务行业也不例外&#xff0c;通过打造小程序平台&#xff0c;可以更好地服务用户&#xff0c;提供更便捷的家居服务体验。 首先&#xff0c;我们可以选…

大二毕设.3-网盘系统

目录 技术选型&#xff1a; 功能概括&#xff1a; 基本演示&#xff1a; 实现讲解&#xff1a; 技术选型&#xff1a; 前端: Vue3 Element Plus后端: SpringBoot Mybatis-Plus MySQL Redis Caffeine FastDFS/OSS SpringCloud Stream RocketMQ Zookeeper 功能概括&…

Flutter实现地图上汇聚到一点的效果。

要求效果&#xff1a; 实现的效果&#xff1a; 代码&#xff1a; 选择点的界面&#xff1a; import dart:math;import package:flutter/material.dart; import package:get/get.dart; import package:kq_flutter_widgets/widgets/animate/mapChart/map_chart.dart; import pa…

Winserver安装Linux虚拟机执行java程序踩坑

前言&#xff1a; “好久没有更新文章了&#xff0c;最近太忙了&#xff01;”一个特别朴实无华的小马哥说到。 “小马蝈蝈&#xff0c;那你现在更新文章了&#xff0c;是不是很闲啊&#xff0c;来帮我....” 耳畔听到一个妹子的声音。咳咳咳~~此处省略一万字&#xff0c;文末也…

WebGL 用鼠标控制物体旋转

目录 鼠标控制物体旋转 如何实现物体旋转 示例程序&#xff08;RotateObject.js&#xff09; 代码详解 示例效果 鼠标控制物体旋转 有时候&#xff0c;WebGL程序需要让用户通过鼠标操作三维物体。这一节来分析示例程序RotateObject&#xff0c;该程序允许用户通过拖动&…

数据通信——传输层TCP(超时时间选择)

引言 TCP每一次发送报文段&#xff0c;就会对这个报文段设置一次计时器。如果时间到了却没有收到确认报文&#xff0c;那么就要重传该报文。 这个之前在TCP传输的机制中提到过&#xff0c;这个章节就来研究一下超时时间问题。 关于加权的概念 有必要提及一下加权的概念&#x…

天地一体化指挥!平战结合的应急感知云来了

面向智慧应急数字化转型需求&#xff0c;天翼物联基于感知云平台创新能力&#xff0c;为客户提供泛协议接入、感知云应急平台、应急感知数据治理、决策处置大屏等在内的应急感知云服务&#xff0c;构建应急感知神经系统新型数字化底座&#xff0c;实现应急感知、预警、决策、处…

程序员必须掌握的算法系列之贪心算法

一&#xff1a;引言 在计算机科学中&#xff0c;贪心算法&#xff08;Greedy Algorithm&#xff09;是一种基于贪心策略的算法思想&#xff0c;它在每一步选择中都采取当前状态下最优的选择&#xff0c;以希望最终能够得到全局最优解。贪心算法通常可以在较短的时间内找到问题…