【问题标题】:qsqltablemodel incompatible data typesqsqltablemodel不兼容的数据类型
【发布时间】:2015-01-05 07:54:40
【问题描述】:

我有一个带有按钮和一些行编辑和列表视图的简单表单。 在列表视图中,用户可以选择项目并在行编辑中编辑他们的参数。

int row = listView->selectionModel()->currentIndex().row();
QString text = lineEdit->text();
sqlTableModel->setData(sqlTableModel->index(row,3),title,Qt::EditRole);
sqlTableModel->submitAll(); //when this line is execeute i get an error

错误:

QODBCResult::exec: Unable to execute statement: "[Microsoft][SQL Native Client][SQL Server]The data types varchar(max) and ntext are incompatible in the equal to operator. [Microsoft][SQL Native Client][SQL Server]Statement(s) could not be prepared."

【问题讨论】:

  • 如果您有可能更改数据表,您应该这样做。将列的数据类型从 NTEXT 转换为 NVARCHAR(MAX)。
  • @user2672165 数据库中列的数据类型是 varchar,我尝试将其更改为 NTEXT 和 NVARCHAR,但它不起作用。它总是向我显示相同的错误。
  • 我对 PyQt 也有同样的问题。我认为这是因为 WHERE 子句中有不兼容的类型(更新/插入...)这个问题与 ODBC/QODBC 驱动程序有关吗?

标签: qt ssms qsqltablemodel


【解决方案1】:

我知道这个问题已经有 2 年历史了,但是在其他应用程序中尝试这样做时,我找到了解决方案。所以这可能对任何想用谷歌搜索的人都有用。

数据类型 varchar(max)ntext 不兼容

在数据库中我使用了数据类型 ntext,但 Qt 使用的是 varchar。所以解决方案在我问题的第一条评论中,我在 2 年前不明白。唯一要做的就是将数据库中的数据类型更改为varchar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多