<>使用QSQL数据库需要添加操作

<>1.在.Pro文件中添加

<>2.在头文件中添加需要使用的类头文件

<>数据库所有类

<>重要类和函数函数:

<>QSqlDatabase类

<>1.连接数据库

QSqlDatabase addDatabase(const QString &type, const QString &connectionName =
QLatin1String(defaultConnection)) 该函数是用来把我们的数据库添加到连接列表中, 参数1
:表示你是什么类型的数据库,比如sqlite的话就用QSQLITE 参数2:连接名称,表示连接该数据库的文件名字,如果有多个数据库的话,需要自己定义
返回值:就是我们的数据库句柄
<>2.连接远程主机数据库

如果不设置的话默认是生成数据库文件在QT工程文件下

<>3.设置连接主机的端口

<>4.设置数据库文件名

数据库文件名不是连接名,数据库文件必须在使用Open打开数据库前设置好

<>5.设置使用数据库的用户名

<>6.设置使用数据库的密码

<>7.打开数据库

直接使用前面设置的账号和密码打开使用第一个open,
使用是他账号密码使用第二个open

<>8.返回数据库类型

<>9.执行SQL语句

<>QSqlQuery类

<>执行sql语句

exec函数
方式1:直接在构造函数里写入要执行的sql语句,再调用exec函数执行

直接在参数const QString &query = QString()里写入要执行的sql语句,再调用
exec()函数
方式2:直接调用,把sql语句写在参数里执行

执行sql语句的结果保存在QSQLQuery的数组Value里面

next函数
检索结果中的下一条记录(如果可用),并将查询定位在检索到的记录上,该函数一般用于查找时候

<>显示数据库数据

一般我们都是先把数据写到数据显示模型中,再把通过模型写到表格

<>QStandardItemModel数据显示模型
<>1.设置列的头部数据(字段名)

void setHorizontalHeaderItem(int column, QStandardItem *item) 参数说明: int column:
哪一列 QStandardItem*item:字段名即列的名字 <>2.设置某个单元格数据

void setItem(int row, int column, QStandardItem *item) 参数: row:哪一行 column:那一列
QStandardItem*item:数据值 例如: model->setItem(count,0,newQStandardItem(sql_query.
value(0).toString())); <>3.如何把模型数据写到QTableView
使用QTableView的成员函数setModel(模型对象)函数

<>QTableView表格数据显示

使用QTableView的成员函数setModel(模型对象)函数,把数据模型设置为QTableView显示的模型

<>测试代码
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QSql
> #include <QSqlDatabase> #include<QSqlDriver> #include<QDebug> #include<
QSqlQuery> #include<QSqlError> #include<QString> #include <QStandardItemModel>
QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class
MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent =
nullptr); ~MainWindow(); public: void sqlit3_init(); QSqlDatabase db;
QStandardItemModel*model; int count=0; void Init_model(); private slots: void
on_pushButton_3_clicked(); void on_insert_bt_clicked(); void
on_delect_bt_clicked(); void on_read_bt_clicked(); void on_modify_bt_clicked();
void on_select_bt_clicked(); private: Ui::MainWindow *ui; QSqlDatabase *db1; };
#endif // MAINWINDOW_H #include "mainwindow.h" #include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::
MainWindow) { ui->setupUi(this); sqlit3_init(); Init_model(); } MainWindow::~
MainWindow() { delete ui; db.close(); } void MainWindow::sqlit3_init() { db=
QSqlDatabase::addDatabase("QSQLITE");//连接数据库 db.setDatabaseName("SQLITE.db");
//数据库文件名 db.setUserName("root");//设置用户名 db.setPassword("root");//设置密码 //打印操作
qDebug()<<db.driverName(); qDebug()<<db.databaseName(); qDebug()<<db.password();
bool ok = db.open();//打开数据库文件 if (ok) { qDebug() << QString("数据库打开成功"); } else {
qDebug() << "数据库打开失败!"; } } //1.创建表 void MainWindow::on_pushButton_3_clicked() {
// db.setHostName("./SQLITE.db");//设置需要连接的主机数据库 // db.setPort(6868);//设置端口
QSqlQuery sql_query; if(! sql_query.exec("create table if not exists student
(id int primary key, name text,form text,length int,radius int)")) { qDebug() <<
"Error: Fail to create table." << sql_query.lastError(); } else { qDebug() <<
"Table created!"; } } //2.插入数据 void MainWindow::on_insert_bt_clicked() {
QSqlQuery sql_query; QString sql=QString( "insert into student values
(%1,'%2','%3',%4,%5);") .arg(ui->ID_edit->text().toInt()) .arg(ui->name_lineEdit
->text()) .arg(ui->form_lineEdit_2->text()) .arg(ui->length_lineEdit_3->text().
toInt()) .arg(ui->radius_lineEdit_4->text().toInt()); qDebug()<<sql; if(!
sql_query.exec(sql)) { qDebug()<<"insert error"<< sql_query.lastError(); } else
{ qDebug()<<"insert ok"; } on_read_bt_clicked();//跟新数据 } //3.读取全部数据 void
MainWindow::on_read_bt_clicked() { model->clear();//清除表中数据 Init_model();
//再次初始化模型,不然上面清除清除模型后,列的标题就没了 count=0;//每次都从第0行查询 QSqlQuery sql_query; QString
select_sql= "select * from student order by id asc";// order by 字段名 +asc 递增方式 if
(!sql_query.exec(select_sql)) { qDebug()<<sql_query.lastError(); } else { while(
sql_query.next())//判断下个查询数据是否可用 { // int id =
sql_query.value(0).toInt();//打印某行第一列 // int age = sql_query.value(1).toInt();
// qDebug()<<QString("id:%1 age:%2").arg(id).arg(age); //通过QTableview表格显示数据
model->setItem(count,0,new QStandardItem(sql_query.value(0).toString())); model
->setItem(count,1,new QStandardItem(sql_query.value(1).toString())); model->
setItem(count,2,new QStandardItem(sql_query.value(2).toString())); model->
setItem(count,3,new QStandardItem(sql_query.value(3).toString())); model->
setItem(count,4,new QStandardItem(sql_query.value(4).toString())); count++;
//不断增加行数 } } } //4.删除数据 void MainWindow::on_delect_bt_clicked() { QSqlQuery
sql_query; QString delect_sql=QString( "delete from student where id=%1").arg(ui
->ID_edit->text().toInt());//根据刀具ID删除数据 if(!sql_query.exec(delect_sql)) { qDebug
()<<"delect error"<< sql_query.lastError(); } else { qDebug()<<"delect succeful"
; } on_read_bt_clicked();//更新表中数据 } //5.更新数据 //修改数据 void MainWindow::
on_modify_bt_clicked() { QSqlQuery modify_query; QString modify_sql=QString(
"UPDATE student set name='%1',form='%2',length=%3,radius=%4 WHERE id=%5;") .arg(
ui->name_lineEdit->text()) .arg(ui->form_lineEdit_2->text()) .arg(ui->
length_lineEdit_3->text().toInt()) .arg(ui->radius_lineEdit_4->text().toInt()) .
arg(ui->ID_edit->text().toInt()); if(!modify_query.exec(modify_sql)) { qDebug()
<<"modify error"<< modify_query.lastError(); } else { qDebug()<<"modify
succeful"; } on_read_bt_clicked();//更新表中数据 } //UPDATE students set age=20 WHERE
id=2; //依据ID查询数据 void MainWindow::on_select_bt_clicked() { model->clear();
//清除表中数据 Init_model();//再次初始化模型,不然上面清除清除模型后,列的标题就没了 count=0;//每次都从第0行查询
QSqlQuery sql_query; QString select_sql = QString("select *from student where
id=%1 ;").arg(ui->ID_edit->text().toInt()); if(!sql_query.exec(select_sql)) {
qDebug()<<sql_query.lastError(); } else { while(sql_query.next())//判断下个查询数据是否可用
{ //通过QTableview表格显示数据 model->setItem(count,0,new QStandardItem(sql_query.value(
0).toString())); model->setItem(count,1,new QStandardItem(sql_query.value(1).
toString())); model->setItem(count,2,new QStandardItem(sql_query.value(2).
toString())); model->setItem(count,3,new QStandardItem(sql_query.value(3).
toString())); model->setItem(count,4,new QStandardItem(sql_query.value(4).
toString())); } } } //初始化数据模型 void MainWindow::Init_model() { model=new
QStandardItemModel(this); //设置列的名字 model->setHorizontalHeaderItem(0,new
QStandardItem("刀具ID")); model->setHorizontalHeaderItem(1,new QStandardItem(
"刀具名称")); model->setHorizontalHeaderItem(2,new QStandardItem("加工形式")); model->
setHorizontalHeaderItem(3,new QStandardItem("刀具长度")); model->
setHorizontalHeaderItem(4,new QStandardItem("刀具半径")); //把数据模型设置到Qtableviwe ui->
tableView->setModel(model); }

技术
©2019-2020 Toolsou All rights reserved,
在算法研究过程中如何进行算法创新七大排序算法(java代码)MYSQL中的索引与事务———javaweb(8)(面试必考)2022蓝桥杯JavaB组省赛试题网络安全-wifi攻防网络层协议——ICMP协议MySQL查询表中指定条件下的最新记录JavaSE笔记(一)Java基础语法mysql 查询条件之外的数据_mysql 查询符合条件的数据qt使用数据库sqlite