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 
#include 
#include 
#include 
#include 

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()<

 

三、程序构建运行后,结果如下图所示:

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

图1  程序运行结果

 

 

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

图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

你可能感兴趣的:(数据库积累)