日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Qt学习笔记之MySQL数据库

發布時間:2024/9/21 数据库 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。