Qt5.6.1连接并操作SQL数据库

一、DOS命令操作数据库

虽然在window下是可以用DOS命令建立并操作数据库,但是当涉及到一些比较复杂的数据操作时,还是比较繁琐。这里做个简单的演示,这里对mySQL的Qt配置不做多言,我使用的Qt5.6.1已经自带配置文件了。

用DOS命令建立数据库,输入密码后,显示当前存在的数据库输入命令show databases;(命令后面一定要加“;”
create database mydata;创建一个名叫mydata的数据库;
use mydata; 对数据库进行操作;
更多命令可自行查询,其实这些并好用,不易于数据的修改,推荐使用SQL数据库可视化工具,我使用的是“Navicat for MySQL”。
我们在Navicat中建立表格testtucam20200107,用户密码设置为123456,然后就可以将Qt项目与数据库建立连接了。
在这里插入图片描述

二、使用qt创建图形界面对数据库进行操作

1. 用qt creator 创建一个项目

这里我们使用图形界面,所以要勾选创建图形界面,新建完成之后我们需要将其部好局,如下图所示:
在这里插入图片描述

注意:要在项目中加入数据库的应用,要先在.pro中加入sql:

在这里插入图片描述

2. 连接mySQL数据库

(1)在构造函数中加入代码;

db = QSqlDatabase::addDatabase("QMYSQL");//加入的数据库的驱动类型,使用mySQL写入"QMYSQL"
db.setUserName("root");//数据库用户名
db.setHostName("localhost");//数据库服务器IP(或主机名)
db.setPassword("123456");//数据库密码(这个密码是和数据库登录时候的密码一致)
db.setDatabaseName("mydata");//使用哪个数据库
db.open();
if(!db.open()) //如果数据库打开失败,会弹出一个警告窗口
{
         QMessageBox::warning(this, "警告", "数据库打开失败");
}
else
 {
          //ui->textEdit->setText("数据库打开成功");
          QMessageBox::warning(this, "提示", "数据库打开成功");
 }

(2).h文件需要包含的库文件和添加的定义:

#include <QSqlDatabase>
#include <QSqlQuery>
......

QSqlDatabase db;

(3)基于QT控件的实现:
在这里插入图片描述
界面说明:先通过红色框输入4个相关信息,点击“信息确认”按钮,再点击“原图检测”按钮,对应右边蓝色框表格会显示对应信息(显示控件:table widget)。
代码实现在“原图检测”按钮部分,主要代码如下:

.h文件:

QString  op;
QString batch;
QString number;
QString parameter;
QString dateTime2 ;

float Avg_SelectSum_T = 0.0;
float Avg_SelectSum_T2 = 0.0;

.cpp文件:

//数据库
QSqlQuery query(db);
query.exec("SET NAMES 'Latin1'");//使数据库支持中文(此处很重要)
QString sql=QString("select *from testtucam20200107");
bool okopen= query.exec(sql);
if(okopen)
{
      QMessageBox::about(NULL, "Save1", "save new database success1");
}
 else
{
      QMessageBox::about(NULL, "Save1", "error save new database1");
}
QString str = QString("insert into testtucam20200107(date, people, pi, bian, cankao, T1, T2) values('%1', '%2', '%3', '%4', '%5', '%6', '%7')").arg(dateTime2).arg(op).arg(batch).arg(number).arg(parameter).arg(Avg_SelectSum_T).arg(Avg_SelectSum_T2); //arg 用于填充字符串中的%1,%2...为给定的参数
bool ok=query.exec(str);
if(ok)
{
      QMessageBox::about(NULL, "Save", "save new database success");
}
else
{
      QMessageBox::about(NULL, "Save", "error save new database");
}

Navicat for MySQL软件会显示对应信息:在这里插入图片描述

部分代码说明:

Qt提供的一种格式化字符串输出的函数arg():

str=QString("%1 %2 (%3s-%4s)")
arg(“permissive”).arg(“society”).arg(1950).arg(1970); 这段代码中,%1, %2,
%3,
%4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,%2将被替换成society,%3将被替换成1950,%4将被替换曾1970,最后,这句代码输出为:permissive
society (1950s-1970s).
arg()函数比起sprintf()来是类型安全的,同时它也接受多种的数据类型作为参数,都会被转化为QString类型然后进行替换。

结束,如有错误,还望指正。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值