QT连接数据库及操作
MySQL数据库
创建一个新的项目,带ui,(Widget)
在.pro文件中加上sql,如图
在类的.cpp中加上两个头文件
#include <QSqlDatabase>
#include <QDebug>
#include <QMessageBox>
#include <QSqlError>
当你加上这一句:
qDebug()<<QSqlDatabase::drivers();
QSQLITE 文件型数据库,不用服务器。
这里我们用QMYSQL
添加MYSQL数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //数据库对象
连接数据库(首先得先有mysql)
//连接数据库
db.setHostName("127.0.0.1"); //数据库服务器IP
db.setUserName("root"); //数据库用户名
db.setPassword("123456"); //数据库密码
db.setDatabaseName("info"); //使用哪个数据库
判断数据库是否连接成功同时打开数据库
if( !db.open() ){
//数据库打开失败
QMessageBox::warning(this,"错误",db.lastError().text());
return;
}
(记住,这里要把libmysql.dll库放进QT的bin文件里,否则会弹出找不到)
下面的百度云网盘里有libmysql。dll的库:
链接:https://pan.baidu.com/s/1vXhscnLRZtI1XhQH8oZaOw
提取码:y7h7
这样则说明成功了。
创建表
加个头文件:
#include <QSqlQuery>
创建代码:
QSqlQuery query;
query.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int);");
会发现数据库成功创建出一个student的表
创建表一次就行,或者你事先在mysql创建好了则不用再创建了。
传入数据:
单组传入:
QSqlQuery query;
query.exec("insert into student(id, name, age, score) values(1, 'mike', 18, 59);");
在这里,我mysql可视化用的是 sqlyog。
批量插入
加上头文件
#include <QSqlQuery>
#include <QVariantList>
//odbc风格
//预处理语句
//?相当于占位符
query.prepare("insert into student( name, age, score) values(?,?,?);");
//给字段设置内容 list
QVariantList nameList;
nameList<<"xiaoming"<<"xiaolong"<<"xiaojiang";
QVariantList ageList;
ageList<<11<<22<<33;
QVariantList scoreList;
scoreList<<59<<69<<79;
//给字段绑定相应的值,按顺序绑定
query.addBindValue(nameList);
query.addBindValue(ageList);