关于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 数据库中一些实现案例的内容介绍完了,希望通过本文的学习能对你有所帮助!