32bit的数据库安装包,qt位数要和数据库位数一样,如果有兼容问题(也就是最后一步无响应)就需要在配置exe的程序中使用兼任模式
mysql-5.5.56-win32.msi
数据库操作语句
-- 创建create database info;-- 删除数据库infodrop database info;-- 使用数据库 infouse 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_OBJECTpublic: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"); // 数据库服务器IPdb.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(?, ?, ?);");// 给字段设置内容 listQVariantList 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);");// 给字段设置内容 listQVariantList 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();}


