我的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)
以下是结果屏幕截图:
红色矩形的单元格应显示中国特色,但现在为空
----更新----
我打开了一个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可以检索中文数据
我检查了这篇文章:link并跳转到HANA ODBC连接属性文档
这是一个HANA ODBC问题。 在ODBC配置中,应添加属性项并将其设置为TRUE
然后将显示中文字符
相关问题 更多 >
编程相关推荐