精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

淺析QT MySql操作

移動開發
本文介紹的是QT My Sql操作,它是一個小型關系型數據庫管理系統,另外還有GUI管理工具,例如早先的mysql-front 以及 ems mysql manager,navicat等,現在與C++相結合的一款軟件。

1.MySql驅動編譯

在windows系統中,我們在mingw,MySql5和Qt4的環境中編譯MySql驅動主要有以下幾個步驟:

(1)下載 : http://www.qtcn.org/download/mingw-utils-0.3.tar.gz

(2)將mingw-utils-0.3.tar.gz解壓縮,將bin目錄下的reimp 工具復制到 mingw目錄下的bin 里,如果Dev-C++就復制到C:\Dev-Cpp\bin目錄下

(3)將MySql安裝目錄下的include和lib目錄拷貝到沒有空格的路徑下,比如C: \mysql下;

(4)打開Qt Command Prompt,分別執行以下命令:

cd c:\mysql\lib\opt reimp -d libmysql.lib dlltool -k -d libmysql.def -l libmysql.a

這樣在c:\mysql\lib\opt目錄下就會生成一個libmysql.a文件;

(5)接下來執行以下命令:

  1. cd %QTDIR%\src\plugins\sqldrivers\mysql   
  2. qmake -o Makefile "INCLUDEPATH+=C:\MYSQL\INCLUDE" "LIBS+=C :\MYSQL\LIB\OPT\LIBMYSQL.a" mysql.pro  

找到%QTDIR%\src\plugins\sqldrivers\mysql\下的Makefile.release 和 Makefile.debug文件,去掉-llibmysql項再make編譯,這下便會在%QTDIR%\plugins\sqldrivers目錄下面生成libqsqlmysql.a, qsqlmysql.dll這兩個文件,然后在程式的.pro文件中添加QT+=sql并在程式開頭包含#include 就能操作數據庫了。
2.完全解決數據庫存儲中文和Qt程式顯示數據庫中文及中文字符串的問題

(1)數據庫和表及表里的字符相關字段(varchar, char, text等)都要使用gbk_chinese_ci這種方式,不這樣做也能,但這樣做,會省非常多麻煩。

(2)重新編譯Qt的MySQL驅動,需要修改src / sql / drivers / mysql / qsql_mysql.cpp文件。要修改的部分如下:***百零八行的codec函數  

  1. static QTextCodec* codec(MYSQL* mysql)   
  2. {   
  3. return QTextCodec::codecForName("GBK");//增加部分   
  4. #if MYSQL_VERSION_ID >= 32321   
  5.    QTextCodec* heuristicCodec = QTextCodec :: codecForName ( mysql_character_set_name ( mysql ) );   
  6. if (heuristicCodec)   
  7.    return heuristicCodec;   
  8. #endif   
  9. return QTextCodec::codecForLocale();   
  10. }  

(3)然后,重新編譯qt的mysql驅動在Qt程式main函數中app后面開頭處加入下面三句,加上這三個是省得不必要的麻煩  

  1. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));   
  2. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));   
  3. QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));  

(4)在Qt數據庫連接后,運行"SET NAMES ’UTF8’"語句或"SET NAMES ’GBK’"。

  1. db = QSqlDatabase::addDatabase("QMYSQL");   
  2. db.setHostName("localhost");   
  3. db.setDatabaseName("yourdatabase");   
  4. db.setUserName("yourusername");   
  5. db.setPassword("yourpassword");   
  6. db.open();   
  7. db.exec("SET NAMES ’UTF8’");  

經過以上四步,就能在Qt程式中直接使用中文字符串,而且能直接使用中文字符串出入于程式和數據庫之間

#p#

3.連接MySql數據庫

  1. QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");   
  2. db.setHostName("localhost");   
  3. db.setDatabaseName("test");   
  4. db.setUserName("root");   
  5. db.setPassword("******");   
  6. bool ok = db.open(); 

鏈接QSLite數據庫:

  1. QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  

4.SELECT操作

  1. QSqlQuery query;   
  2. int numRows;   
  3. query.exec("SELECT * FROM scores ORDER BY id ASC");   
  4. while (query.next())   
  5. {   
  6. QString name = query.value(0).toString();//query.value()的參數只能是index   
  7. int salary = query.value(1).toInt();   
  8. label = setText(QString::number(salary)+name);//測試查詢數據的行數   
  9. if (db.driver()->hasFeature(QSqlDriver::QuerySize))   
  10. {   
  11.    numRows = query.size();   
  12. }   
  13. else   
  14. {   
  15.    // this can be very slow   
  16.    query.last();   
  17.    numRows = query.at() + 1;   
  18. }   

5.INSERT操作

(1)直接插入(一條記錄)

  1. QSqlQuery query;   
  2. query.exec("INSERT INTO employee (id, name, salary) VALUES (1001, ’Thad Beaumont’, 65000)");  

(2)通過“:字段”操作

  1. QSqlQuery query;   
  2. query.prepare("INSERT INTO employee (id, name, salary) VALUES (:id, :name, :salary)");   
  3. query.bindValue(":id", 1001);   
  4. query.bindValue(":name", "Thad Beaumont");   
  5. query.bindValue(":salary", 65000);   
  6. query.exec();  

(3)通過“?”操作

  1. QSqlQuery query;   
  2. query.prepare("INSERT INTO employee (id, name, salary) VALUES (?, ?, ?)");   
  3. query.addBindValue(1001);   
  4. query.addBindValue("Thad Beaumont");   
  5. query.addBindValue(65000);   
  6. query.exec();  

6.UPDATE操作

  1. QSqlQuery query;   
  2. query.exec("UPDATE employee SET salary = 70000 WHERE id = 1003");  

7.DELETE操作

  1. QSqlQuery query;   
  2. query.exec("DELETE FROM employee WHERE id = 1007");  

8.transaction()操作

有時為了執行一系列復雜的操作,使用QSqlDatabase::transaction()能加快速度

  1. //database為QSqlDatabase對象   
  2. if(database.driver()->hasFeature(QSqlDriver::Transactions)) //測試數據庫是否支持Transactions,   
  3. {   
  4. database.transaction();   
  5. query.exec("SELECT name FROM scores WHERE id=19");   
  6. if(query.next())   
  7. {   
  8.       //str = query.value(0).toString();   
  9.       str = "中國";   
  10.       query.exec("INSERT INTO scores(name) VALUES(’"+str+"’)");   
  11. }   
  12. database.commit();   
  13. }  

注意,如果str為中文字符串,在SQL語句中需要標明’str’(用單引號括起),如果是英文或數字字符串,能不加單引號(指的是包含在雙引號內的SQL語句)

 #p#

9.使用SQL Model類

QSqlQueryModel——一個只讀的讀取數據庫數據的模型

QSqlTableModel——一個可讀寫的單一表格模型,能不用寫SQL語句

QSqlRelationalTableModel——QSqlTableModel的一個子類

這些類都繼承于QAbstractTableModel,而他們又都繼承于QAbstractItemModel

(1) QSqlQueryModel的使用

  1. QSqlQueryModel querymodel;   
  2. querymodel.setQuery("SELECT * FROM scores ORDER BY id ASC");   
  3. for (num=0;numquerymodel.rowCount();num++)   
  4. {   
  5. str += QString::number(querymodel.record(num).value("id").toInt());   
  6. str += " ";   
  7. str += querymodel.record(num).value("name").toString();   
  8. //注意這里的value()參數能是index(索引)也能是字段名,前面QSqlQuery的value()參數只能是index   
  9. str += "\n";   
  10. }   
  11. label->setText(str);  

(2) QSqlTableModel的使用

① 讀取數據

  1. QSqlTableModel tablemodel;  
  2. tablemodel.setTable("scores");   
  3. tablemodel.setFilter("id > 10");   
  4. tablemodel.setSort(0,Qt::DescendingOrder);   
  5. tablemodel.select();   
  6. for (num=0;numtablemodel.rowCount();num++)   
  7. {   
  8. str += QString::number(tablemodel.record(num).value("id").toInt());   
  9. str += " ";   
  10. str += tablemodel.record(num).value(1).toString();   
  11. str += "\n";   
  12. }   
  13. label->setText(str);  

② 修改數據

  1. QSqlTableModel tablemodel;   
  2. tablemodel.setTable("scores");   
  3. tablemodel.setFilter("id > 10");   
  4. tablemodel.setSort(0,Qt::DescendingOrder);   
  5. tablemodel.select();   
  6. for (num=0;numtablemodel.rowCount();num++)   
  7. {   
  8. QSqlRecord record = tablemodel.record(num);   
  9. record.setValue("name",record.value("name").toString()+"2");   
  10. tablemodel.setRecord(num,record);   
  11. }   
  12. if(tablemodel.submitAll())   
  13. label->setText("修改成功!");   
  14. else   
  15. label->setText("修改失?。?quot;);  

或能用setData()來修改,代碼如下:

  1. QSqlTableModel tablemodel;   
  2. tablemodel.setTable("scores");   
  3. tablemodel.setFilter("id > 10");   
  4. tablemodel.setSort(0,Qt::DescendingOrder);   
  5. tablemodel.select();   
  6. tablemodel.setData(tablemodel.index(2,1),"data修改");   
  7. if(tablemodel.submitAll())   
  8.     label->setText("修改成功!");   
  9. else   
  10.     label->setText("修改失敗!");  

③ 刪除數據

  1. tablemodel.removeRows(row, 5);   
  2. //removeRows()***個參數為要刪除的***行的行數,第二個參數為要刪除的總行數;   
  3. tablemodel.submitAll();   
  4. //注意,利用QSqlTableModel修改或刪除數據,***都要使用submitAll()執行更改  

④ 插入數據

  1. QSqlRecord record = tablemodel.record();   
  2. record.setValue("name","插入的");   
  3. tablemodel.insertRecord(2,record);   
  4. //注意,此處插入利用insertRecord()函數,該函數***個參數為插入到tablemodel的第幾行,  
  5. 第二個參數為記錄,注意這里的記錄一 定要和tablemodel中的記錄匹配,  
  6. 故QSqlRecord record = tablemodel.record();另外,插入操作不用submitAll(),因為,insertRecord()返回bool值。   

10.使用QTableView

開頭處要使用#include

  1. QTableView *view = new QTableView();   
  2. view->setModel(&model);   
  3. view->setEditTriggers(QAbstractItemView::NoEditTriggers);   
  4. view->show(); 

【編輯推薦】

在VS2008中使用Qt編程

mysql修改、刪除數據記錄

深度解析 QT 編譯安裝方法

 Qt 平臺中使GUI保持響應流暢

MySQL導入導出大量數據程序實現方法

教你如何利用MySQL學習MongoDB之安裝篇

責任編輯:zhaolei 來源: 網絡轉載
相關推薦

2011-06-10 13:21:00

Qt 網絡

2011-06-10 11:24:08

Qt Quick Designer

2011-06-21 13:52:18

Qt 界面

2011-06-20 15:13:08

Qt 對象模型

2011-06-13 11:07:22

QT 移植

2011-06-15 18:00:26

2011-06-09 18:24:36

QT Wince

2011-06-22 14:04:33

Qt 元類型 注冊

2011-06-10 15:00:02

Qt VC

2009-09-15 13:30:54

linq級聯

2010-06-11 10:30:38

MySQL編碼

2011-06-29 15:14:22

Qt Embedded 鍵盤

2011-06-29 15:36:21

Qt Embedded 鍵盤

2011-06-10 14:33:38

Qt VC.NET

2011-06-10 09:09:38

Qt Creator OpenCV

2011-06-23 11:16:39

Qt Excel

2011-07-05 14:29:44

Ubuntu QT Mysql

2009-09-10 14:47:53

Linq .NET查詢

2009-08-17 13:34:02

C#異步操作

2011-07-05 18:04:45

QT Mysql
點贊
收藏

51CTO技術棧公眾號

韩国成人精品a∨在线观看| 日韩中文在线电影| 欧美午夜宅男影院在线观看| 日韩免费av电影| av中文字幕免费| 一本一道久久综合狠狠老精东影业| 国产一区二区三区毛片| 国产大学生av| 91国内外精品自在线播放| 一区二区三区在线观看网站| 欧美亚洲免费在线| 国内老熟妇对白hdxxxx| 日韩国产在线观看| 欧美精品videosex性欧美| 九一在线免费观看| 伊人春色之综合网| 日韩欧美另类在线| 午夜免费福利视频在线观看| 亚洲欧洲自拍| 一区二区三区91| 一区二区免费在线观看| 香蕉视频免费看| 风间由美一区二区三区在线观看| 国产精品白嫩美女在线观看| 国产在线观看免费视频今夜| 久久人人88| 一区二区三欧美| 免费无码一区二区三区| 亚洲精品在线播放| 91精品国产综合久久香蕉的特点| 国产性xxxx18免费观看视频| gogo高清在线播放免费| 亚洲人成网站在线| 中文字幕一区二区三区乱码 | 九九国产精品视频| 国产ts一区二区| 毛片在线免费视频| 9久re热视频在线精品| 欧美激情影音先锋| 久久久国产成人| 欧美在线二区| 欧美xxxx18国产| avtt天堂在线| 久久婷婷蜜乳一本欲蜜臀| 国产一区二区三区四区福利| 亚洲成人网在线播放| 亚洲aa在线| 国产亚洲精品美女久久久| 欧美 日本 国产| 美女毛片一区二区三区四区| 亚洲乱码国产乱码精品精天堂| 久久福利小视频| 欧美性生活一级片| 国产网站欧美日韩免费精品在线观看 | 国产成人精品三级| 福利视频一区二区三区| 亚洲爆乳无码一区二区三区| 成人精品国产免费网站| 九9re精品视频在线观看re6| 偷拍25位美女撒尿视频在线观看| 99r精品视频| 欧美亚洲免费高清在线观看| 成人午夜电影在线观看| 中文字幕五月欧美| 伊人网在线免费| 678在线观看视频| 黑人巨大精品欧美一区二区一视频| 阿v天堂2017| 日韩欧美另类一区二区| 欧美性大战久久久久久久蜜臀| 中文字幕 91| 国产免费区一区二区三视频免费| 精品美女在线观看| 91av在线免费| 久久密一区二区三区| 欧美激情二区三区| 国产午夜精品久久久久| 看电视剧不卡顿的网站| 91精品天堂| 无码国产精品一区二区免费16| 久久蜜桃一区二区| 浴室偷拍美女洗澡456在线| 丁香影院在线| 在线精品视频免费观看| 奇米777在线视频| 亚洲日本三级| 久久成人免费视频| 午夜毛片在线观看| 韩国v欧美v亚洲v日本v| 国产视频99| 国产黄色免费在线观看| 亚洲影视在线播放| 免费看污污网站| 哺乳一区二区三区中文视频 | 久久性色av| 成人黄色生活片| 亚洲av毛片成人精品| 国产精品第四页| 每日在线更新av| 国产精品高清一区二区| 亚洲开心激情网| 久草资源在线视频| 久久精品噜噜噜成人av农村| 国产亚洲情侣一区二区无| 男女啪啪在线观看| 一本一道久久a久久精品综合蜜臀| 色播五月综合网| 日韩av网站在线免费观看| 色偷偷88888欧美精品久久久| 国产精品第九页| 国产伦精品一区二区三区视频青涩| 免费精品视频一区| 免费污视频在线观看| 欧美日精品一区视频| 性欧美丰满熟妇xxxx性久久久| 国产精品不卡| 国产精品吹潮在线观看| 人妻少妇一区二区三区| 亚洲丝袜美腿综合| 欧美精品性生活| 狠狠做六月爱婷婷综合aⅴ| 韩国视频理论视频久久| www夜片内射视频日韩精品成人| 亚洲国产精品成人综合色在线婷婷| 免费看的黄色大片| а√中文在线天堂精品| 久久最新资源网| 一区二区三区免费在线| 国产精品三级在线观看| 国产精品无码一本二本三本色| 任你躁在线精品免费| 久久久久久综合网天天| www.色播.com| 一区二区三区免费网站| 日本中文字幕精品| 91精品天堂福利在线观看| 国产精品自在线| 91在线导航| 欧美久久久久久久久久| 成年人视频软件| 老汉av免费一区二区三区| 日韩免费一区二区三区| 欧美91看片特黄aaaa| 日韩精品999| www.国产一区二区| 久久亚洲春色中文字幕久久久| 成人免费观看cn| 精品国产导航| 2019日本中文字幕| 精品无人乱码| 欧美视频一区二区三区| 91免费在线看片| 韩国毛片一区二区三区| 超碰97免费观看| 亚洲午夜免费| 久久免费视频在线观看| 日韩av免费观影| 色88888久久久久久影院野外| 国产黄色大片免费看| 久久狠狠亚洲综合| 国产一级片91| 精品国产18久久久久久洗澡| 热草久综合在线| 成人在线免费观看| 91精品麻豆日日躁夜夜躁| 麻豆国产尤物av尤物在线观看| 成+人+亚洲+综合天堂| 国模无码视频一区二区三区| 国产精品三级| 91亚洲永久免费精品| 久久亚洲导航| 亚洲天堂第一页| 一级做a爱片久久毛片| 日韩久久综合| 国产亚洲人成a在线v网站| 精品视频在线免费看| 91麻豆精品久久毛片一级| 国产成人综合亚洲91猫咪| 秋霞无码一区二区| 少妇精品久久久一区二区| 成人精品在线视频| 绿色成人影院| 日韩有码片在线观看| 丁香六月天婷婷| 在线视频欧美精品| 欧美丰满艳妇bbwbbw| 91在线你懂得| 在线观看免费的av| 亚洲美女啪啪| 杨幂一区欧美专区| 欧美18免费视频| 国产日韩欧美在线视频观看| www中文字幕在线观看| 亚洲三级黄色在线观看| 国产黄色免费大片| 欧洲生活片亚洲生活在线观看| 在线观看成人毛片| 国产欧美一二三区| yjizz视频| 久草这里只有精品视频| 亚洲熟妇av一区二区三区漫画| 亚洲乱码在线| 日本一区二区在线| 美女视频免费精品| 91久久久久久久久久久久久| 欧美电影h版| 国内精品400部情侣激情| 午夜视频在线看| 亚洲视频一区二区| 亚洲精品一区二区三区不卡| 欧美日韩免费视频| 日韩一级在线视频 | 国产一级免费av| 国产精品毛片高清在线完整版| av无码一区二区三区| 国产精品911| 天堂av8在线| 日韩中文字幕区一区有砖一区 | 国产乱子伦一区二区三区国色天香| 999香蕉视频| 一本一道久久综合狠狠老精东影业| 国产91视频一区| 欧美高清视频手机在在线| 青青影院一区二区三区四区| 美日韩黄色大片| 中文字幕免费观看一区| 性生活免费观看视频| 精品国产乱码久久久久久果冻传媒 | 极品国产91在线网站| 亚洲成av人综合在线观看| 日韩在线一卡二卡| 国产精品欧美久久久久一区二区| 白丝女仆被免费网站| 91亚洲国产成人精品一区二三 | 国产亚洲欧美一级| 中文字幕一区二区三区人妻| av电影天堂一区二区在线观看| 欧美一级大片免费看| 国产麻豆精品theporn| 久久这里只精品| 久久精品国产77777蜜臀| 日韩av播放器| 午夜一级久久| aⅴ在线免费观看| 日产国产欧美视频一区精品| 老司机午夜av| 蜜臀a∨国产成人精品| 杨幂毛片午夜性生毛片 | 欧美午夜不卡影院在线观看完整版免费 | 日韩电影在线观看完整版| 日韩精品视频免费| 免费在线国产| 亚洲视频axxx| 婷婷免费在线视频| 欧美成人精品h版在线观看| 丝袜美女在线观看| 91国产一区在线| 美女18一级毛片一品久道久久综合| 日本久久久久久久久久久| av成人免费| 666精品在线| 加勒比视频一区| 欧美人xxxxx| 99国产精品免费视频观看| 黄色网zhan| 亚洲成人原创| 青青在线视频免费| 国产中文字幕精品| 大乳护士喂奶hd| 国产三级欧美三级日产三级99| 日本黄色录像视频| 亚洲午夜三级在线| 精品黑人一区二区三区| 欧美精品亚洲二区| 黄色福利在线观看| 亚洲无限av看| 搞黄网站在线观看| 国内免费精品永久在线视频| 午夜精品成人av| 成人av在线亚洲| 欧美电影免费网站| 午夜精品亚洲一区二区三区嫩草| 亚洲第一偷拍| 日av中文字幕| 国产激情偷乱视频一区二区三区| 亚洲av无码一区二区三区观看| 国产精品久久久99| 日韩欧美大片在线观看| 欧美精品 国产精品| 人妻va精品va欧美va| 色哟哟亚洲精品一区二区| 色呦呦网站在线观看| 国产成人精品av在线| 免费观看亚洲视频大全| 欧洲一区二区日韩在线视频观看免费| 亚洲欧美网站在线观看| 可以免费在线看黄的网站| 国产成人免费在线观看不卡| 中文字幕伦理片| 亚洲成人资源在线| 国产男男gay体育生白袜| 亚洲欧美日韩精品久久亚洲区| а√中文在线8| 国产精品久久久久久婷婷天堂 | 日韩高清国产一区在线观看| 亚洲午夜一区| 成年人免费大片| 99免费精品在线| 69xx绿帽三人行| 欧美性高清videossexo| 日本aaa在线观看| 欧美精品激情blacked18| www.久久热| 视频一区视频二区视频| 亚洲欧美激情诱惑| 午夜免费福利影院| 一区二区三区在线免费播放| 国产一区二区在线不卡| 国产亚洲欧美另类中文| 成人性生交大片免费网站 | 日韩欧美国产片| 国产色爱av资源综合区| 亚洲天堂视频网站| 亚洲大胆人体av| 激情网站在线| 99精品国产高清一区二区| 91精品久久久久久久蜜月| 黄色小视频免费网站| 国产精品视频看| 波多野结衣一区二区三区四区| 亚洲伦理中文字幕| 最新中文字幕在线播放| 国产一区国产精品| 精品动漫av| 在线播放第一页| 亚洲黄色免费电影| www.天天干.com| 久久99久久亚洲国产| 91亚洲精品在看在线观看高清| 在线视频亚洲自拍| 国内欧美视频一区二区| www色aa色aawww| 欧美一区在线视频| 亚洲www色| 99久久一区三区四区免费| 欧美精品99| 老熟女高潮一区二区三区| 亚洲不卡在线观看| 香港一级纯黄大片| 日韩av日韩在线观看| 国产一区二区精品久| 黄色手机在线视频| 亚洲婷婷国产精品电影人久久| 国产熟女精品视频| 九九热精品在线| 久久久久97| 无码精品国产一区二区三区免费| 久久精品亚洲精品国产欧美| 中文字幕一二区| 久久国产精彩视频| 999国产精品一区| 中文字幕无码精品亚洲35| 久久综合网色—综合色88| 久久精品五月天| 久久国内精品一国内精品| 警花av一区二区三区| 国产一级爱c视频| 国产亚洲一区二区三区| 国产露脸无套对白在线播放| 欧美大片欧美激情性色a∨久久| 国产精品极品在线观看| 人妻丰满熟妇av无码区app| 成人免费在线观看入口| 亚洲成a人片在线| 日本伊人精品一区二区三区介绍| 色综合天天爱| 色哟哟无码精品一区二区三区| 欧美日韩一区二区三区| 欧美另类极品| 国产精品一区二区三区精品| 丝袜美腿亚洲一区| 丝袜 亚洲 另类 欧美 重口| 亚洲电影免费观看高清| 国产国产一区| 你懂的av在线| 亚洲欧洲成人精品av97| 人妻中文字幕一区| 国产精品尤物福利片在线观看| 国产一区二区三区四区三区四| av鲁丝一区鲁丝二区鲁丝三区| 欧美日韩精品电影| 美女搞黄视频在线观看| 日日噜噜噜夜夜爽爽| 久久综合中文字幕| 国产suv精品一区二区69| 日韩免费观看av| 亚洲激情午夜| 黄色香蕉视频在线观看| 亚洲欧美中文另类| av综合网站|