Qt学习笔记之MySQL数据库
一、MySQL概述
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,屬于?Oracle?旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的?RDBMS?(Relational Database Management System,關系數據庫管理系統) 應用軟件之一。
MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。
二、MySQL安裝
下載MySQL 安裝包,下載地址。
安裝過程:超詳細MySQL安裝及基本使用教程
也可以使用phpstudy來安裝MySQL
windows端5款mysql客戶端工具:
1)MySQL Workbench
這屬于mysql官方出品,免費,功能強大,是首選。
2)HeidiSQL
免費,功能強大,強烈推薦。
3)dbForge Studio for MySQL
收費軟件
4)Navicat for MySQL
這個確實是好用,就是價格有點貴。
5)SQLyog
收費軟件,貴。
三、Qt操作MySQL數據庫
3.1 創建數據庫
//! 輸出可用數據庫qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();for (int i = 0; i < drivers.size(); i++){qDebug()<<drivers[i];}//! 添加數據庫驅動QSqlDatabase mySqlDB = QSqlDatabase::addDatabase("QMYSQL");//! 設置數據庫名稱mySqlDB.setDatabaseName("E:/work/qe/mytest1/database.db");//! 打開數據庫if(!mySqlDB.open())return false;Qt連接MySQL的時候提示“QSqlDatabase: QMYSQL driver not loaded”問題,原因有如下兩個:
1)缺少libmysql.dll 文件
解決辦法是從 MySQL\lib中將 libmysql.dll 文件復制D:\Qt\Qt5.7.1\5.7\msvc2015_64\bin中
2)Qt Creator與MySQL位數不統一
如果上面的方法試過了還是不行那么應該是你安裝的MySQL和QT的位數不同,可以打開MySQL控制臺?
輸入show variables like '%version_%';即可查看MySql位數。
?
2.2 創建一個表、插入及查詢操作
#include <QCoreApplication> #include <QDebug> #include <QSqlDatabase> #include <QSqlQuery> #include <QString> #include <QSqlRecord> #include <QSqlDriver> #include <QString>int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);//! 輸出可用數據庫qDebug() << "Available drivers:";QStringList drivers = QSqlDatabase::drivers();for (int i = 0; i < drivers.size(); i++){qDebug()<<drivers[i];}//! 添加數據庫驅動QSqlDatabase mySqlDB = QSqlDatabase::addDatabase("QMYSQL");mySqlDB.setHostName("localhost");mySqlDB.setDatabaseName("web001");mySqlDB.setUserName("root");mySqlDB.setPassword("123456");mySqlDB.setPort(3306);//! 打開數據庫if(!mySqlDB.open()){qDebug("Failed to connect to root mysql admin");return false;}//! 以下執行相關sql語句QSqlQuery mySqlQuery;//! 清空student表mySqlQuery.exec("drop table student");//! 新建student表,id設置為主鍵,還有一個name項mySqlQuery.exec("create table student (id int primary key, name varchar(20),course varchar(20))");//!批量導入QStringList strListStdName;strListStdName<<"wang bin"<<"xiao yu"<<"ye mei";QStringList strListStdCourse;strListStdCourse<<"Math"<<"English"<<"Computer";mySqlQuery.prepare("INSERT INTO student (id,name, course) ""VALUES (:id,:name, :course)");for (int i = 0; i < strListStdName.size(); i++){mySqlQuery.bindValue(":id",i); //! 加入主鍵mySqlQuery.bindValue(":name", strListStdName[i]); //! 向綁定值里加入名字mySqlQuery.bindValue(":course", strListStdCourse[i]); //! 課程mySqlQuery.exec(); //! 加入庫中}//! 向表中插入1條數據mySqlQuery.bindValue(0,3);mySqlQuery.bindValue(1,"wang han");mySqlQuery.bindValue(2,"Chinese");mySqlQuery.exec();//! 查找表中id >=1 的記錄的id項和name項的值mySqlQuery.exec("select * from student where id >= 0");//! query.next()指向查找到的第一條記錄,然后每次后移一條記錄QSqlRecord mySqlRec = mySqlQuery.record();while(mySqlQuery.next()){//! 獲取query所指向的記錄在結果集中的編號int nRowNum = mySqlQuery.at();//! 獲取每條記錄中屬性(即列)的個數int nColumnNum = mySqlQuery.record().count();//! 獲取"name"屬性所在列的編號,列從左向右編號,最左邊的編號為0int nFieldNo = mySqlQuery.record().indexOf("name");nFieldNo = mySqlRec.indexOf("course");//! 獲取id屬性的值,并轉換為int型int stud_id = mySqlQuery.value(0).toInt();//! 獲取name屬性的值QString stud_name = mySqlQuery.value(1).toString();//! 獲取course屬性的值QString stud_course = mySqlQuery.value(2).toString();//! 輸出結果qDebug() << nRowNum << nColumnNum << nFieldNo << stud_id << stud_name << stud_course;}//! 定位到結果集中編號為2的記錄,即第三條記錄,因為第一條記錄的編號為0qDebug() << "exec seek(2) :";if(mySqlQuery.seek(2)){qDebug() << "rowNum is : " << mySqlQuery.at()<< " id is : " << mySqlQuery.value(0).toInt()<< " name is : " << mySqlQuery.value(1).toString();}//! 定位到結果集中最后一條記錄qDebug() << "exec last() :";if(mySqlQuery.last()){qDebug() << "rowNum is : " << mySqlQuery.at()<< " id is : " << mySqlQuery.value(0).toInt()<< " name is : " << mySqlQuery.value(1).toString();}return a.exec();}輸出結果:?
?
參考資料:
1.?Qt5開發學習總結(五)——Qt5 使用 MySQL 數據庫及簡單應用
2.?第22篇 數據庫(二)編譯MySQL數據庫驅動
3.?44.QT-安裝MySQL、測試連接MySQL
4.?Qt學習筆記之SQLITE數據庫
總結
以上是生活随笔為你收集整理的Qt学习笔记之MySQL数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt操作SQLite数据库练习(2020
- 下一篇: mysql-5.7.37-winx64解