解析關于QT 數據庫中一些實現案例
關于QT 數據庫中一些實現案例是本文要介紹的內容,。主要是來了解一下QT中數據庫的操作,也是一些小案例的實現,具體來看詳細內容。
1、QT4讀取數據庫中文字符串亂碼的解決方法
將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");
重新編譯驅動及解決。
2、Qt中連接Mysql數據庫的方法
Qt中連接mysql數據庫并不復雜,Qt幫助中也有詳細的代碼例子,現舉例如下:
- 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,你可以嘗試連接另一數據庫,如"QPSQL"不管成功與否,再連接mysql,你會發現連接成功了!
正如錯誤信息所示:TCP/IP socket 出錯了,你在連接數據庫之前應該先做初始化,代碼如下: #include "winsock2.h"
- #include "windows.h"
- WSAData wsadata;
- if (WSAStartup(MAKEWORD(2,0), &wsadata) != 0)
- {
- qFatal("WSA Startup failed");
- }
程序編譯時,在工程中增加附加依賴項 Ws2_32.lib Ok,相信看到這里,你就可以在輕松的連接mysql數據庫了.
小結:解析關于QT 數據庫中一些實現案例的內容介紹完了,希望通過本文的學習能對你有所幫助!