QSqlQueryModel获取中文字符的空白单元格

2024-05-04 00:52:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我的GUI应用程序中有一个QSqlQueryModel,用于从SAP HANA数据库检索数据,并将其与QTableView小部件绑定

我使用了QODBC驱动程序,并在Windows的ODBC数据源(64位)中配置了一个ODBC项。但是当我设置一个查询来选择一个维度表时,我可以得到数据,但是现在数据库中包含中文字符的单元格在tableView中都是空白的

代码如下:

self._db = QSqlDatabase.addDatabase("QODBC3")
self._db.setDatabaseName(self._odbc+";SCROLLABLERESULT=TRUE;encoding='utf-8'")
self._db.setUserName(self._user)
self._db.setPassword(self._password)
# 打开数据库,如有报错则显示
if not self._db.open():
    QMessageBox.critical(self, "Database Error", self._db.lastError().text())
    return
# 获取要执行的SQL
_sql = self._generateSQLStatement()
self._model = QSqlQueryModel()
self._model.setQuery(_sql, self._db)
if self._model.lastError().isValid():
    QMessageBox.critical(self,"Database Error", self._model.lastError().text())
    return
self._ui.tableView.setModel(self._model)

以下是结果屏幕截图:

红色矩形的单元格应显示中国特色,但现在为空

enter image description here

----更新----

我打开了一个odbc跟踪,发现了一个sql错误:

DIAG [S1000] [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;-10427 Conversion of parameter/column (2) from data type NVARCHAR to ASCII failed (-10427)

在这个错误中,似乎是中文字符无法转换成ascii码

但是为什么QSqlQueryModel会出现这个问题呢?我尝试使用SQLite文件和中文,QSqlQueryModel可以检索中文数据


1条回答
网友
1楼 · 发布于 2024-05-04 00:52:58

我检查了这篇文章:link并跳转到HANA ODBC连接属性文档

这是一个HANA ODBC问题。 在ODBC配置中,应添加属性项并将其设置为TRUE

CHAR_AS_UTF8

然后将显示中文字符

enter image description here

相关问题 更多 >