樹莓派開發筆記(十七):樹莓派4B+上Qt多使用者連線操作Mysql資料庫同步
前言
其他操作
sudo apt-get install tightvncserversudo apt-get install xrdpsudo service xrdp restartsudo ufw allow 3389sudo service ufw restart
安裝qt5
sudo apt-get install qt5-defaultsudo apt-get install qtcreator
sudo apt-get install libqt5sql5-mysql
Qt操作mariadb資料庫
QSqlDatabase db;db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1");db.setPort(3306);db.setDatabaseName("data");db.setUserName("root");db.setPassword("a1234567");if(db.open()){ LOG << "Succeed to open db";}else{ LOG << "Failed to open db:" << db.lastError().text(); return;}QString cmd = "select * from student;";QSqlQuery query = db.exec(cmd);while(query.next()){ LOG << query.value(0).toString() << query.value(1).toString() << query.value(2).toString() << query.value(3).toString();}
多使用者操作
鎖型別
悲觀鎖
樂觀鎖
for update使用場景(悲觀鎖)
for update 用法
begin;select * from XXX where XXX for update;...commit;
Qt測試
使用127.0.0.1的ip進行連線(本地連線)
QSqlDatabase db;db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("127.0.0.1");db.setPort(3306);db.setDatabaseName("data");db.setUserName("root");db.setPassword("a1234567");if(db.open()){ LOG << "Succeed to open db";}else{ LOG << "Failed to open db:" << db.lastError().text(); return;}if(db.transaction()){ QString cmd = "select * from student for update;"; QSqlQuery query = db.exec(cmd); while(query.next()) { LOG << query.value(0).toString() << query.value(1).toString() << query.value(2).toString() << query.value(3).toString(); } for(int index = 0; index < 10; index++) { QThread::sleep(1); LOG << "sleep:" << index; } if(!db.commit()) { LOG << "Failed to commit"; }}
使用區域網的ip進行連線(遠端連線)
QSqlDatabase db;db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("192.168.0.103");db.setPort(3306);db.setDatabaseName("data");db.setUserName("root");db.setPassword("a1234567");if(db.open()){ LOG << "Succeed to open db";}else{ LOG << "Failed to open db:" << db.lastError().text(); return;}if(db.transaction()){ QString cmd = "select * from student for update;"; QSqlQuery query = db.exec(cmd); while(query.next()) { LOG << query.value(0).toString() << query.value(1).toString() << query.value(2).toString() << query.value(3).toString(); } for(int index = 0; index < 10; index++) { QThread::sleep(1); LOG << "sleep:" << index; } if(!db.commit()) { LOG << "Failed to commit"; }}
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
systemctl restart mysql.service
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010283/viewspace-2900617/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 樹莓派開發筆記(十七):樹莓派4B+上Qt多使用者連線操作Mysql資料庫同步(單條資料悲觀鎖)樹莓派筆記QTMySql資料庫
- 樹莓派開發筆記(十五):樹莓派4B+從原始碼編譯安裝mysql資料庫樹莓派筆記原始碼編譯MySql資料庫
- 樹莓派開發筆記(十六):樹莓派4B+安裝mariadb資料庫(mysql開源分支)並測試基本操作樹莓派筆記資料庫MySql
- 樹莓派筆記樹莓派筆記
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- 樹莓派 4 開箱記樹莓派
- (二)樹莓派配置MySQL樹莓派MySql
- 「玩轉樹莓派」樹莓派 3B+ 配置無線WiFi樹莓派WiFi
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 樹莓派 Django 前端開發樹莓派Django前端
- 樹莓派使用樹莓派
- 樹莓派安裝QT5樹莓派QT
- 樹莓派學習筆記(三)PyTorch樹莓派筆記PyTorch
- 樹莓派wiringPi庫詳解樹莓派
- 樹莓派開發—基礎配置樹莓派
- 樹莓派CM4(四):樹莓派映象替換核心樹莓派
- 樹莓派使用入門:慶祝樹莓派的 14 天樹莓派
- 樹莓派使用入門:如何用樹莓派來娛樂樹莓派
- 樹莓派使用入門:如何購買一個樹莓派樹莓派
- 樹莓派的硬體資料樹莓派
- 樹莓派透過nmcli命令連線WIFI樹莓派WiFi
- 樹莓派與FileZilla樹莓派
- 樹莓派配置watchdog樹莓派
- Ubuntu和樹莓派遠端操作Ubuntu樹莓派
- 樹莓派使用入門:如何為樹莓派社群做出貢獻樹莓派
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 樹莓派開發筆記(十四):入手研華工控樹莓派UNO-220(三):測試rtc、gpio、232和485樹莓派筆記
- 【.NET 與樹莓派】使用 GPIO 庫樹莓派
- 樹莓派遠端連線工具SSH使用教程樹莓派
- 樹莓派遠端連線工具VNC使用教程樹莓派VNC
- 樹莓派 | 修改樹莓派3熱點的名稱和密碼樹莓派密碼
- 樹莓派使用入門:如何啟動一個新的樹莓派樹莓派
- 樹莓派CM4 wifi頻繁斷開連線樹莓派WiFi
- 樹莓派入門操作流程詳解樹莓派
- 樹莓派raspiOS換源樹莓派iOS
- 樹莓派 -入門篇樹莓派
- 樹莓派安裝 vscode樹莓派VSCode