32bit的数据库安装包,qt位数要和数据库位数一样,如果有兼容问题(也就是最后一步无响应)就需要在配置exe的程序中使用兼任模式
mysql-5.5.56-win32.msi
数据库操作语句
-- 创建
create database info;
-- 删除数据库info
drop database info;
-- 使用数据库 info
use info;
-- 创建表
create table student(id int primary key auto_increment, name varchar(255), age int, score int);
create table student(id int primary key, name varchar(255), age int, score int);
-- 删除student表
drop table student;
-- 插入数据
insert into student(id, name, age, score) values(1, 'mike', 18, 59);
insert into student(id, name, age, score) values(2, 'lucy', 25, 36);
insert into student(id, name, age, score) values(1, 'Tom', 35, 25);
-- 更新数据
update student set score = 90 where id = 3;
-- 查找数据
select * from student;
select * from set student where name = 'mike';
-- 删除数据库
delete from student where name = 'mike';
.pro文件
QT += core gui sql
widget.h文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_remove_clicked();
void on_scureDelete_clicked();
void on_cannot_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlQuery>
#include <QVariantList>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
// 打印Qt支持的数据库驱动
qDebug() << QSqlDatabase::drivers();
// 添加MySql数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
// 连接数据库
db.setHostName("127.0.0.1"); // 数据库服务器IP
db.setUserName("root"); // 数据库用户名
db.setPassword("123456"); //数据库密码
db.setDatabaseName("test"); // 使用哪个数据库
// 使数据库支持中文
// query.exec("SET NAMES 'Latin1'");
// 打开数据库
if (!db.open()) // 数据库打开失败
{
QMessageBox::warning(this, "错误", db.lastError().text());
return;
}else {
// while(query.next())
// {
// qDebug() << query.
// }
QSqlQuery query(db); // 以下执行相关QSL语句
/************
// 创建表
query.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int);");
************/
/************
// 插入数据
query.exec("insert into student(id, name, age, score) values(1, 'mike', 18, 59);");
************/
/***********
// 批量插入
// odbc风格
// 预处理语句 ?号相当于占位符
query.prepare("insert into student(name, age, score) values(?, ?, ?);");
// 给字段设置内容 list
QVariantList nameList;
nameList << "小明" << "小龙" << "小江";
QVariantList ageList;
ageList << 11 << 22 << 33;
QVariantList scoreList;
scoreList << 55 << 85 << 75;
// 给字段绑定相应的值 按顺序绑定
query.addBindValue(nameList);
query.addBindValue(ageList);
query.addBindValue(scoreList);
// 执行预处理命令
query.execBatch();
************/
/***********
// oracle风格
// 占位符 : + 自定义名字
query.prepare("insert into student(name, age, score) values(:name, :age, :score);");
// 给字段设置内容 list
QVariantList nameList;
nameList << "小明2" << "小龙2" << "小江2";
QVariantList ageList;
ageList << 34 << 45 << 36;
QVariantList scoreList;
scoreList << 5 << 25 << 75;
// 给字段绑定
query.bindValue(":name", nameList);
query.bindValue(":age", ageList);
query.bindValue(":score", scoreList);
// 执行预处理命令
query.execBatch();
************/
// 查数据
query.exec("select * from student");
while (query.next()) // 一行一行遍历
{
// 取出当前行的内容
qDebug() << query.value(0).toInt()
<< query.value(1).toString()
<< query.value("age").toInt()
<< query.value("score").toInt();
}
}
}
Widget::~Widget()
{
delete ui;
}
// 删除按钮
void Widget::on_remove_clicked()
{
// 获取行编辑内容
QString name = ui->editName->text();
// 删除的sq语句
QString sql = QString("delete from student where name = '%1';").arg(name);
// 开启一个事务
qDebug() << QSqlDatabase::database().transaction(); // 获取当前操作的数据库 (database单例模式)
QSqlQuery query;
qDebug() << query.exec(sql);
}
// 确定删除按钮
void Widget::on_scureDelete_clicked()
{
// 确定删除
qDebug() << QSqlDatabase::database().commit();
}
// 取消按钮
void Widget::on_cannot_clicked()
{
// 回滚、撤销
qDebug() << QSqlDatabase::database().rollback();
}