Qt 连接mysql数据库
使用Qt连接MySQL需要在项目的.PRO文件里添加一行 QT += sql
才可以。
连接数据库还需要添加相应的头文件 #include
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("www.zploo.com");
if(db.open())
qDebug() << "数据库链接成功";
我这是连接的本地的数据库,需要注意的一点就是 ***Qt Creator连接操作MySql数据库需要 libmysql.dll ***(MySQL的类库可以点击这里下载)
进入目录: C:\Qt\Qt5.5.0\5.5\mingw492_32\bin (自定义安装Qt,路径有所差异)
把 libmysql.dll 拷贝到上面目录
连接上数据库后要做的当然就是 新建一个表了 ,在QT中很方便 直接使用QSqlQuery类中的exec成员函数就可以了
QSqlQuery sql;
sql.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int);");
新增一条数据,删除一条数据,删除表,删除数据库,和上面的一样也是使用QSqlQuery类中的 exec成员函数 把参数里的 sql语句换一换就可以了
sql.exec("insert into student(name, age, score) values('zploo', 18, 59);");
真正开发中还会遇到批量添加数据的情况,给大家介绍两种风格的批量添加数据 分别是 ODBC 风格和 Oracle风格
QSqlQuery sql;
sql.prepare("insert into student (name, age, score) values (?, ?, ?);");
QVariantList name;
name << "a" << "b" << "c";
QVariantList age;
age << 12 << 13 << 14;
QVariantList score;
score << 60 << 79 << 99;
sql.addBindValue(name);
sql.addBindValue(age);
sql.addBindValue(score);
bool zploo = sql.execBatch();
if(!zploo)
qDebug() << "数据添加失败";
QSqlQuery sql;
sql.prepare("insert into student (name, age, score) values (:name, :age, :score);");
QVariantList name;
name << "xiaoa" << "xiaob" << "xiaoc";
QVariantList age;
age << 33 << 44 << 55;
QVariantList score;
score << 89 << 90 << 99;
sql.bindValue(":name", name);
sql.bindValue(":score", score);
sql.bindValue(":age", age);
bool zploo = sql.execBatch();
if(!zploo)
qDebug() << "数据批量添加失败";
Qt中还可以直接使用 QSqlDatabase 类对数据库开启“事务” ,这样数据的一些操作就可以有回滚功能了
比如说我们要从数据库中删除一条数据 ,就可以先开启一个事务, 在删除数据后 只有执行了 commit() 操作 这行数据才会被真的删除 否则的话可以通过 rollback() 将刚才的删除操作回滚!
void Widget::on_buttonDel_clicked()
{
//获取行编辑内容
QString name = ui->lineEdit->text();
QString sql = QString("delete from student where name = '%1'").arg(name);
//开启一个事务
QSqlDatabase::database().transaction();
//声明一个QSqlQuery类
QSqlQuery query;
//执行SQL语句
query.exec(sql);
}
void Widget::on_buttonSure_clicked()
{
//确定删除
QSqlDatabase::database().commit();
}
void Widget::on_buttonCancel_clicked()
{
//回滚,撤销
QSqlDatabase::database().rollback();
}
这是使用Qt连接Mysql数据库的一个小练习,需要这个项目完整代码的朋友可以点击这里下载:Qt连接Mysql数据库
最后修改于 2016-01-01