本文章主要总结的内容是用Qt5.9Creator工程读写Mysql5.7.17数据库。具体的操作步骤如下所述。
一、用Qt5.9的Creator创建一个Console工程,选择MinGW32编译器。
二、添加代码
2.1创建好工程后,在.pro文件里面,添加如下代码:(直接复制就行)
QT+=sql
2.2在main.cpp文件,添加如下代码:(直接复制就行)
#include <QCoreApplication>
#include <QSqlDriver>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
QSqlDatabase db;
int main(int argc,char *argv[])
{
QCoreApplication a(argc,argv);
//连接数据库
db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");//连接本地的Mysql数据库,如果是远程的remote,需要输入对应的IP:"127.0.0.1"
db.setDatabaseName("nengxin");//默认连接的数据库名称为nengxin,后面的例子在名称为nengxin的数据库里面,创建了一个名称为student的表
db.setUserName("root");//数据库登录用户名
db.setPassword("admin");//数据库登录密码
if(!db.open())//连接数据库,成功显示open success,否则显示Failed to connect to root mysql admin
qDebug()<<"Failed to connect to root mysql admin";
else qDebug()<<"open success!";
//创建查询对象
QSqlQuery query(db);//实例一个查询对象,该查询对象主要对刚刚连接的db数据库进行操作
//创建一个student表,表的列标题从左到右分别为id,name。
//primary key表示主键,是唯一的,不可重复。id后面跟着primary key表示该id是唯一的,一般查询根据这个id号进行查询
//varchar(20)表示name变量为char,最大字节为20BYTE,但是是可变的,根据输入的内容进行调整
query.exec("create table student(id int primary key,"
"name varchar(20))");
//插入内容语句,创建表格时插入
query.exec("insert into nengxin.student values(1,'first')");//在数据库中,可能会出错,但是在Qt中却没有出错
query.exec("insert into nengxin.student values(2,'second')");
//插入内容语句:创建好表格后,插入一行语句
//在数据库中,需要把单引号变为双引号,即:'first'变为"first"
query.exec("insert into nengxin.student(id,name) values(40,'ABC')");//这条语句绝对可用,经过我亲自测试十几次
//修改一行内容语句(更新语句)
query.exec("update nengxin.student set name='zhang' where id=1");
//删除一行内容语句
query.exec("delete from nengxin.student where id>=2");
//必须创建好表后,才能对列进行操作
//插入一列内容语句
query.exec("alter table nengxin.student add address char(60)");//在表列的后面增加一列,列明为address
query.exec("alter table nengxin.student add address123 char(60)");
query.exec("alter table nengxin.student add age tinyint unsigned after name");//在列名称为name的后面增加一列,列名称为age
//删除一列内容语句
query.exec("alter table nengxin.student drop address123");//在表的后面删除一列
//修改列的类型或者名称
query.exec("alter table nengxin.student change name name varchar(30)");//将列名称name改为name varchar(30)类型
//修改表名称drop table nengxin.mqtt
query.exec("alter table nengxin.student rename nengxin.student1");//将表nengxin.student名称修改为nengxin.student1
query.exec("alter table nengxin.student1 rename nengxin.student");//将表nengxin.student1名称修改为nengxin.student
//遍历数据库(查询数据库表nengxin.student每一行的内容,并且输出)
query.exec("SELECT * FROM nengxin.student where id>=0");//代表选择id=3的一行内容
while(query.next())//遍历数据表nengxin.student每一行,从第0行到最后一行
{
quint32 id = query.value(0).toInt();//value(0),0代表第几列的值。在该例中,代表id=3的行,第0列
QString name = query.value(1).toString();
QString age = query.value(2).toString();
QString address = query.value(3).toString();
qDebug()<<id<<name<<age<<address;//输出MySql数据库表mqtt.a10001中id=3的MAC和state
}
//删除整张表
//query.exec("drop table nengxin.student");//解除注释直接删除创建的表格
db.close();//关闭数据库
return a.exec();
}
三、程序构建运行后,结果如下图所示:
图1 程序运行结果
图2 Mysql5.7.17数据库
由图1可知,上述代码可以正常连接Mysql5.7.17数据库。由图1和图2可以看出,上述代码连接数据库后,可以对数据库进行读写操作。其中图1为输出nengxin.student表的内容。
参考内容:
http://www.cnblogs.com/mr-wid/archive/2013/05/09/3068229.html#d13
http://www.qter.org/portal.php?mod=view&aid=54