1. 程式人生 > >Qt5.9Creator讀寫Mysql5.7.17資料庫詳細例子(資料庫基本操作:建立表,查詢,插入,刪除,修改)

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表的內容。