本文共 1162 字,大约阅读时间需要 3 分钟。
#include参考(但不怎么起作用)#include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); //连接数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=I:/mycode/ConnectAccess/test.mdb"); QString out_str; QTextStream out(stdout); QSqlError err; QSqlRecord record; bool ok = db.open(); if(ok){//success //读数据库中的表 QStringList tables; QString tabName,sqlString; tables = db.tables(QSql::Tables); //读表中记录 for (int i = 0; i < tables.size(); ++i){ tabName = tables.at(i); qDebug()<
https://bbs.csdn.net/topics/390992221
解决方案:
m_odbc_db.tables(QSql::AllTables)本身就不支持非英文,此处是QT的一个BUG,读出来的就是乱码,根本就没法通过编码转换得出中文。
只需要编译sqldrivers/odbc这一个插件就行了。
用qtcreater打开C:\Qt\Qt5.9.5\5.9.5\Src\qtbase\src\plugins\sqldrivers\sqldrivers.pro,进行编译
注意2376这一行QString fieldVal = qGetStringData(hStmt, 2, -1, false);
改为QString fieldVal = qGetStringData(hStmt, 2, -1, true);就行了
附件有编译好的qsqlodbc.dll,替换掉5.9.5\mingw53_32\plugins\sqldrivers\qsqlodbc.dll即可
转载地址:http://jblai.baihongyu.com/