//.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
db = new QSqlDatabase;
//判断某个路劲下是否包含某个数据库文件
if( !db->contains("my.db") ){
//添加数据库,给定数据库的驱动
*db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库名字
db->setDatabaseName("my.db");
}
//判断数据库文件是否被打开
if( !db->isOpen() ){
//打开数据库文件,并判断打开是否成功
if( !db->open()){
QMessageBox::warning(this, "警告", "数据库打开失败");
return;
}
}
//数据库操作
QString sql = "create table if not exists usr(stuNo varchar(12), name text, age integer);";
//构造 QSqlQuery 的对象,并用sql进行初始化,就是将sql语句写入 query中
QSqlQuery query(sql);
// exec(): 执行sql语句
if( !query.exec() ){
QMessageBox::warning(this, "警告", "数据库表创建失败");
return;
}
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
QString stuNo = ui->lineEdit->text();
QString name = ui->lineEdit_2->text();
int age = ui->lineEdit_3->text().toInt();
if(stuNo.isEmpty() && name.isEmpty() && ui->lineEdit_3->text().isEmpty()){
QMessageBox::warning(this, "警告", "数据不完整");
return;
}
// QString::arg(): 将arg中的数据,替换 %1
QString sql = QString("insert into usr values('%1', '%2', %3);").arg(stuNo).arg(name).arg(age);
QSqlQuery query;
//将sql语句组装到 query中
query.prepare(sql);
if( !query.exec() ){
// query.lastError().text(): 打印sql语句执行的错误信息
qDebug() << "sql: " << sql << query.lastError().text();
QMessageBox::warning(this, "警告", "数据插入失败");
}
}
void Widget::on_pushButton_4_clicked()
{
QString sql = "select * from usr;";
QSqlQuery query;
if( !query.exec(sql) ){
qDebug() << "sql: " << sql << query.lastError().text();
QMessageBox::warning(this, "警告", "数据查询失败");
return;
}
int row = 0;
//query.record().count(): 返回记录中字段的数目
qDebug() << query.record().count();
//判断 query中一条记录的首地址是否为真
while(query.next()){
// value(QString key): 取出一条记录中字段名为 key的value值
qDebug() << query.value("stuNo").toString();
qDebug() << query.value("name").toString();
qDebug() << query.value("age").toInt();
qDebug() << "----------------------------------";
//向表格中插入某行
ui->tableWidget->insertRow(row);
//向 tableWidget中 设置 表格项
ui->tableWidget->setItem(row, 0, new QTableWidgetItem( query.value("stuNo").toString() ));
ui->tableWidget->setItem(row, 1, new QTableWidgetItem( query.value("name").toString() ));
ui->tableWidget->setItem(row, 2, new QTableWidgetItem( query.value("age").toString() ));
row++;
}
}
基于qt的 Qsqlite3使用
于 2022-09-29 15:49:50 首次发布