• 2072阅读
  • 8回复

Qt5中文无法查询 [复制链接]

上一主题 下一主题
离线流水枯藤
 

只看楼主 倒序阅读 楼主  发表于: 2019-12-10
Qt5连接MySQL数据库时用中文查询数据显示数据
数据库中有三个表,我用了三个.cpp文件,其中一个用中文查询能显示结果,其他两个只能用英文查询得到结果
三个.cpp文件中的代码除了数据表名其他都相同
数据库编码为utf8,Qt默认编码设置为utf8,utf8 BOM设置为如果编码为utf8则添加,Qt中没有用代码设置编码
.cpp文件中使用QStringLiteral设置表头
QSqlQueryModel *model = new QSqlQueryModel;
QString str= QString("select * from composite where material_name like '%%1%').arg(); model->setQuery(str);
    model->setHeaderData(0,Qt::Horizontal,QStringLiteral("序号"));
离线XChinux

只看该作者 1楼 发表于: 2019-12-10
数据库连接后,执行一下下列语句:
SET NAMES 'utf8'
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线流水枯藤

只看该作者 2楼 发表于: 2019-12-10
回 XChinux 的帖子
XChinux:数据库连接后,执行一下下列语句:
SET NAMES 'utf8' (2019-12-10 09:30) 

没有效果
    if(!db.open())
    {
        QMessageBox::warning(this,"错误",db.lastError().text());
        return;
    }
    db.exec("set names 'utf8'");
离线流水枯藤

只看该作者 3楼 发表于: 2019-12-10
数据库连接后会显示
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
更换数据表显示
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
离线XChinux

只看该作者 4楼 发表于: 2019-12-10
同一个数据库同一个线程只连接一次就行了,你上面的报错提示重复创建这个连接了。
创建连接后,先执行下上面我写的查询看看。

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setUsername(...);
db.setDatabase(....);
.....
if (db.open())
{
      db.exec("SET NAMES 'utf8'");
}
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线流水枯藤

只看该作者 5楼 发表于: 2019-12-10
回 XChinux 的帖子
XChinux:同一个数据库同一个线程只连接一次就行了,你上面的报错提示重复创建这个连接了。
创建连接后,先执行下上面我写的查询看看。
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setUsername(...);
....... (2019-12-10 17:49) 

还是不行啊,中文查询不显示数据,英文可以
离线流水枯藤

只看该作者 6楼 发表于: 2019-12-10
中文查询时能显示表头
在查询语句后面添加qDebug不显示数据
在MySQL中使用同样查询语句会显示数据
离线XChinux

只看该作者 7楼 发表于: 2019-12-11
SQL语句中不要加中文,先将查询结果中的中文正确显示了再说。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线流水枯藤

只看该作者 8楼 发表于: 2019-12-11
回 XChinux 的帖子
XChinux:SQL语句中不要加中文,先将查询结果中的中文正确显示了再说。 (2019-12-11 08:23) 

没有添加,代码中使用的是如题的模糊查询
快速回复
限100 字节
 
上一个 下一个