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