解析關(guān)于QT 數(shù)據(jù)庫中一些實(shí)現(xiàn)案例
關(guān)于QT 數(shù)據(jù)庫中一些實(shí)現(xiàn)案例是本文要介紹的內(nèi)容,。主要是來了解一下QT中數(shù)據(jù)庫的操作,也是一些小案例的實(shí)現(xiàn),具體來看詳細(xì)內(nèi)容。
1、QT4讀取數(shù)據(jù)庫中文字符串亂碼的解決方法
將c:\qt\4.6.2\src\sql\drivers\mysql\qsql_mysql.cpp文件中的
- mysql_set_character_set(d->mysql, "utf8");
改為
- mysql_set_character_set(d->mysql, "gbk");
重新編譯驅(qū)動(dòng)及解決。
2、Qt中連接Mysql數(shù)據(jù)庫的方法
Qt中連接mysql數(shù)據(jù)庫并不復(fù)雜,Qt幫助中也有詳細(xì)的代碼例子,現(xiàn)舉例如下:
- QSqlDatabase m_defDB = QSqlDatabase::addDatabase( "QMYSQL" );
- m_defDB.setHostName( "localhost" );
- m_defDB.setDatabaseName( "MyDB" );
- m_defDB.setUserName( "root" );
- m_defDB.setPassword( "123456" );
- if ( ! m_defDB.open() )
- {
- QMessageBox::critical(NULL, "Error Information", m_defDB.lastError().text(), MessageBox::Ok ,QMessageBox::Cancel );
- }
- return true;
事實(shí)上你按這這段代碼作是連接不上mysql的,你得到只是一出錯(cuò)信息
- “Can't create TCP/IP socket(10093 QMYSQL)”,
使你不知所措,其實(shí)這可能是qt的一個(gè)bug,你可以嘗試連接另一數(shù)據(jù)庫,如"QPSQL"不管成功與否,再連接mysql,你會(huì)發(fā)現(xiàn)連接成功了!
正如錯(cuò)誤信息所示:TCP/IP socket 出錯(cuò)了,你在連接數(shù)據(jù)庫之前應(yīng)該先做初始化,代碼如下: #include "winsock2.h"
- #include "windows.h"
- WSAData wsadata;
- if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
- {
- qFatal("WSA Startup failed");
- }
程序編譯時(shí),在工程中增加附加依賴項(xiàng) Ws2_32.lib Ok,相信看到這里,你就可以在輕松的連接mysql數(shù)據(jù)庫了.
小結(jié):解析關(guān)于QT 數(shù)據(jù)庫中一些實(shí)現(xiàn)案例的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!