Qt数据基本操作
基本操作
1.检查你当前现有的数据库驱动里面有没有QMYSQL
QStringList list = QSqlDatabase::drivers();
qDebug() << list;//打印支持的sql驱动
2.连接你的数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("f"); // 数据库名称
db.setHostName("localhost"); // 主机名
db.setUserName("你的用户名"); // 数据库,用户名
db.setPassword("你的密码"); // 数据库,密码
db.setPort(3306); // 数据库,端口
3.判断打开数据库是否成功
//判断打开数据库是否成功
if(!db.open()){
qDebug()<<"QMYSQL link fail's cause:"<<db.lastError().text();
return;
}else{
qDebug()<<"link success!!!";
}
4.获取数据库中某个表的内容信息
以f数据库中的fruit表为例
//获取数据库中某个表的内容信息
QSqlQuery query;
QString sql = "select * from fruit;";//在当前这个库中执行sql语句
query.exec(sql);
while(query.next())
{
//取出当前记录中的字段
qDebug()<<query.value(0).toInt()<<":"
<<query.value("name").toString()<<","
<<query.value("price").toFloat()<<":"
<<query.value("unit").toString();
}
5.sql事务操作(只有在写操作时才有必要进行事务操作)
//sql事务操作(只有在写操作时才有必要进行事务操作)
sql = "insert into fruit values(6,'芒果',5.6,'kg');";
db.transaction();//创建事务
bool flag = query.exec(sql);//exec()会执行SQL语句,如果是select语句,则执行结果会放在query中
if(flag)//如果sql执行成功就,
{
db.commit();//提交事务
}else{//如果sql执行失败就,
db.rollback();//事务回滚
}
6.关闭数据库
//数据库操作结束后,记得关闭
db.close();
完整代码
DBTest.pro
QT += core gui sql
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QDebug>
#include <QSqlQuery>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStringList list = QSqlDatabase::drivers();
qDebug() << list;//打印支持的sql驱动
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setDatabaseName("f"); // 数据库名称
db.setHostName("localhost"); // 主机名
db.setUserName("你的用户名"); // 数据库,用户名
db.setPassword("你的密码"); // 数据库,密码
db.setPort(3306); // 数据库,端口
//判断打开数据库是否成功
if(!db.open()){
qDebug()<<"QMYSQL link fail's cause:"<<db.lastError().text();
return;
}else{
qDebug()<<"link success!!!";
}
//获取数据库中某个表的内容信息
QSqlQuery query;
QString sql = "select * from fruit;";//在当前这个库中执行sql语句
query.exec(sql);
while(query.next())
{
//取出当前记录中的字段
qDebug()<<query.value(0).toInt()<<":"
<<query.value("name").toString()<<","
<<query.value("price").toFloat()<<":"
<<query.value("unit").toString();
}
qDebug()<<"=================";
//sql事务操作(只有在写操作时才有必要进行事务操作)
sql = "insert into fruit values(6,'芒果',5.6,'kg');";
db.transaction();//创建事务
bool flag = query.exec(sql);//执行SQL语句,执行结果放在query中
if(flag)//如果sql执行成功就,
{
db.commit();//提交事务
}else{//如果sql执行失败就,
db.rollback();//事务回滚
}
//再查询一次
sql="select * from fruit;";
query.exec(sql);
while(query.next())
{
//取出当前记录中的字段
qDebug()<<query.value(0).toInt()<<":"
<<query.value("name").toString()<<","
<<query.value("price").toFloat()<<":"
<<query.value("unit").toString();
}
//数据库操作结束后,记得关闭
db.close();
}
MainWindow::~MainWindow()
{
delete ui;
}
执行结果:
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
link success!!!
1 : "苹果" , 5.5 : "kg"
2 : "橘子" , 6.5 : "kg"
3 : "榴莲" , 9.6 : "kg"
4 : "菠萝" , 5.5 : "kg"
5 : "荔枝" , 9.6 : "kg"
=================
1 : "苹果" , 5.5 : "kg"
2 : "橘子" , 6.5 : "kg"
3 : "榴莲" , 9.6 : "kg"
4 : "菠萝" , 5.5 : "kg"
5 : "荔枝" , 9.6 : "kg"
6 : "芒果" , 5.6 : "kg"
版权声明:本文为weixin_52668597原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。