QT5連接MySQL實(shí)現(xiàn)增刪改查
更新時(shí)間:2022年12月28日 09:50:46 作者:音視頻開發(fā)老舅
這篇文章主要為大家詳細(xì)介紹了QT5如何連接MySQL實(shí)現(xiàn)增刪改查功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
實(shí)現(xiàn)代碼
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#include
#include
#include
const char *kDbType = "QMYSQL"; // 數(shù)據(jù)庫類型
const QString& kHost = "127.0.0.1"; // 數(shù)據(jù)庫的ipd地址
const int kPort = 3306; // 數(shù)據(jù)庫端口號(hào)
const QString& kUsername = "root"; // 數(shù)據(jù)庫賬號(hào)
const QString& kPassword = "123456"; // 數(shù)據(jù)庫密碼
//const QString& dbname = "test"; // 數(shù)據(jù)庫名
class DBSql{
private:
QSqlDatabase db; // 數(shù)據(jù)庫操作對象
QSqlQuery query;
QSqlError error; // SQLError對象
bool flag; // 判斷函數(shù)是否執(zhí)行
bool DBInit(){
db = QSqlDatabase::addDatabase(kDbType);
db.setHostName(kHost);
db.setPort(kPort);
db.setUserName(kUsername);
db.setPassword(kPassword);
QString sqlname = "數(shù)據(jù)庫連接";
flag = db.open();
sqlerror(flag,query,NULL,sqlname);
return flag;
}
void sqlerror(bool flag,QSqlQuery query,QString sql,QString sqlname){
if(flag){
qDebug() << sqlname+"成功!" << sql;
}else{
error = query.lastError();
qDebug() << sqlname+"失??!" << sql << error.driverText() << error.databaseText();
}
}
public:
// 構(gòu)造函數(shù),初始化數(shù)據(jù)庫連接
DBSql(){
this->DBInit();
}
// 設(shè)置數(shù)據(jù)庫名
void setDatabase(const QString& dbname){
db.setDatabaseName(dbname);
db.open();
}
// 查詢表字段數(shù)
int sqlRecord(const QString& sql){
QSqlQuery query(sql);
QSqlRecord record = query.record();
int const n = record.count();
qDebug()<<"查詢的字段總數(shù):"<< n;
return n;
}
// 查詢結(jié)果總數(shù)
int sqlTotal(const QString& sql){
QSqlQuery query(sql);
return query.size();
}
// 根據(jù)sql返回查詢結(jié)果
QString sqlQueryValue(const QString& sql){
QSqlQuery query(db);
flag = query.exec(sql);
if(flag && query.next()){
return query.value(0).toString();
}else{
sqlerror(false,query,sql,"返回查詢結(jié)果失敗");
return NULL;
}
}
// 增加記錄
bool sqlInsert(const QString& sql){
QSqlQuery query(db);
flag = query.exec(sql);
sqlerror(flag,query,sql,"增加記錄");
return flag;
}
// 刪除記錄
bool sqlDelete(const QString& sql){
QSqlQuery query(db);
flag = query.exec(sql);
sqlerror(flag,query,sql,"刪除記錄");
return flag;
}
// 查詢記錄
list* sqlQuery1(const QString& sql){
db.open();
QSqlQuery query(db);
query.exec(sql);
const int count = query.record().count();
const int total = query.size();
cout<<"The number of fileds to query: "<* dot;
int *in;
dot = new list;
int i = 0;
while(query.next()){
int j = 0;
in = new int[4];
while(jpush_back(in);
sqlerror(flag,query,sql,"查詢記錄");
return dot;
}
}
int(*f(const QString& sql,const int total))[4]{
db.open();
QSqlQuery query(db);
query.exec(sql);
const int count = query.record().count();
cout<<"The number of fileds to query: "<* li;
// li = dbsql.sqlQuery1(sqlquery);
// qDebug()<size();
// list::iterator iterator;
// for(iterator=li->begin();iterator!=li->end();++iterator){
// cout<<*iterator<運(yùn)行結(jié)果

測試數(shù)據(jù)
/* Navicat Premium Data Transfer Source Server : localhost_3306 Source Server Type : MySQL Source Server Version : 50556 Source Host : localhost:3306 Source Schema : test Target Server Type : MySQL Target Server Version : 50556 File Encoding : 65001 Date: 23/03/2020 12:09:27 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for xy -- ---------------------------- DROP TABLE IF EXISTS `xy`; CREATE TABLE `xy` ( `id` int(11) NOT NULL AUTO_INCREMENT, `x1` int(255) NULL DEFAULT NULL, `y1` int(255) NULL DEFAULT NULL, `x2` int(255) NULL DEFAULT NULL, `y2` int(255) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of xy -- ---------------------------- INSERT INTO `xy` VALUES (1, 1, 12, 3, 4); INSERT INTO `xy` VALUES (2, 5, 6, 7, 8); INSERT INTO `xy` VALUES (3, 9, 10, 11, 12); INSERT INTO `xy` VALUES (7, 13, 14, 15, 16); INSERT INTO `xy` VALUES (8, 17, 18, 19, 20); INSERT INTO `xy` VALUES (9, 21, 22, 23, 24); SET FOREIGN_KEY_CHECKS = 1;
到此這篇關(guān)于QT5連接MySQL實(shí)現(xiàn)增刪改查的文章就介紹到這了,更多相關(guān)QT5 MySQL增刪改查內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
static全局變量與普通的全局變量的區(qū)別詳細(xì)解析
以下是對static全局變量與普通的全局變量的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-09-09
C++ STL入門教程(7) multimap、multiset的使用
這篇文章主要介紹了C++ STL入門教程第七篇,multimap一對多索引,multiset多元集合的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
OpenCV圖像特征提取之Shi-Tomasi角點(diǎn)檢測算法詳解
Harris角點(diǎn)檢測算法就是對角點(diǎn)響應(yīng)函數(shù)R進(jìn)行閾值處理,Shi-Tomasi原理幾乎和Harris一樣的,只不過最后計(jì)算角點(diǎn)響應(yīng)的公式發(fā)生了變化。本文將和大家詳細(xì)說說Shi-Tomasi角點(diǎn)檢測算法的原理與實(shí)現(xiàn),需要的可以參考一下2022-09-09
C語言實(shí)現(xiàn)電腦關(guān)機(jī)程序
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)電腦關(guān)機(jī)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
結(jié)構(gòu)體類型數(shù)據(jù)作為函數(shù)參數(shù)(三種方法)
將一個(gè)結(jié)構(gòu)體中變量中的數(shù)據(jù)傳遞給另一個(gè)函數(shù),有以下三種方法。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10

