解析關(guān)于QT 數(shù)據(jù)庫中一些實現(xiàn)案例
關(guān)于QT 數(shù)據(jù)庫中一些實現(xiàn)案例是本文要介紹的內(nèi)容,。主要是來了解一下QT中數(shù)據(jù)庫的操作,也是一些小案例的實現(xiàn),具體來看詳細內(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ū)動及解決。
2、Qt中連接Mysql數(shù)據(jù)庫的方法
Qt中連接mysql數(shù)據(jù)庫并不復(fù)雜,Qt幫助中也有詳細的代碼例子,現(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;
事實上你按這這段代碼作是連接不上mysql的,你得到只是一出錯信息
- “Can't create TCP/IP socket(10093 QMYSQL)”,
使你不知所措,其實這可能是qt的一個bug,你可以嘗試連接另一數(shù)據(jù)庫,如"QPSQL"不管成功與否,再連接mysql,你會發(fā)現(xiàn)連接成功了!
正如錯誤信息所示:TCP/IP socket 出錯了,你在連接數(shù)據(jù)庫之前應(yīng)該先做初始化,代碼如下: #include "winsock2.h"
- #include "windows.h"
- WSAData wsadata;
- if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
- {
- qFatal("WSA Startup failed");
- }
程序編譯時,在工程中增加附加依賴項 Ws2_32.lib Ok,相信看到這里,你就可以在輕松的連接mysql數(shù)據(jù)庫了.
小結(jié):解析關(guān)于QT 數(shù)據(jù)庫中一些實現(xiàn)案例的內(nèi)容介紹完了,希望通過本文的學習能對你有所幫助!