Qt5.9Creator读写Mysql5.7.17数据库详细例子(数据库基本操作:创建表,查询,插入,删除,修改)

本文章主要总结的内容是用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表的内容。

猜你喜欢

转载自blog.csdn.net/amu628/article/details/81481571