- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我这样做:
QSqlQuery searchQuery(QString("select * from people where id = %1").arg(1));
if (searchQuery.next())
{
std::cout << "Name: " << searchQuery.value(1).toString().toStdString() << std::endl;
}
输出是(如预期的那样):
Name: David
但是,如果我这样做:
QSqlTableModel *model = new QSqlTableModel;
// Set used table
model->setTable("people");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
// Set where clause
model->setFilter(QString("id=%1").arg(1));
model->select();
// Read result
QSqlRecord record = model->record();
if (!record.isEmpty())
{
std::cout << "Name from model: " << record.value(1).toString().toStdString();
}
记录不为空,但输出为空:
Name from model:
谁能看出我在使用 QSqlTableModel 时做错了什么?
此外,对于这两种方法,我不明白你为什么不必告诉它要使用哪个数据库(即我实例化了一个 QSqlDatabase 和 .open() 它,但我从不告诉查询在数据库?)
谢谢,
大卫
最佳答案
QSqlRecord record = model->record();
您正在使用 QSqlQueryModel::record()它返回一个“空白”记录,而不是 QSqlQueryModel::record(int row)。你得到的记录不为空:你可以从中得到查询返回的字段的数量和名称。
使用 QSqlQuery 或 QSqlTableModel,您可以指定要使用的数据库连接(请参阅 QSqlTableModel 或 QSqlQuery 构造函数)。如果不这样做,则使用默认数据库连接:请参阅 QSqlDatabase documentation .如果您没有明确为其命名,则您打开的连接是默认连接。
关于mysql - QSqlTableModel 空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440448/
子类化 QSQLTableModel 并重写数据方法: class SclDataModel(QSqlTableModel): def __init__(self, parent=None):
我正在尝试继承 QSqlTableModel 以使我的表格中的数据以我需要的方式显示。 class TableViewModel(QSqlTableModel): def __init__(s
如果一条记录已被另一个数据库客户端插入到 mysql 表中,我如何收到通知,这可能吗? 最佳答案 void QSqlTableModel::beforeInsert(QSqlRecord &recor
我正在尝试添加始终为空的最后一行。现在我有代理模型,我在其上调用 insertRow() - 插入行。但是当更新最后一行(插入数据)时,我需要添加另一行。我应该连接到哪个信号? 有时会出现奇怪的错误
我正在尝试在 qt c++ 中访问 mysql 数据库。 我有不同的表格,想将它们输出到 QTableView 上。 我使用 QSqlTableModel,效果很好,但是当我想过滤结果时,我遇到了问题
我正在尝试从 ODBC 源 (informix db) 加载和显示数据。我可以创建并打开连接。但是我在使用 QSqlTableModel 时遇到了一些问题。下面的代码编译和运行没有错误,但不显示任何数
当一行要被编辑时,一个索引被传递到编辑对话框中。 编辑工作正常。 当我想添加一行时,我没有将索引传递给对话构造函数,因此它知道它应该添加一个新行。 这是对对话按钮使用react的函数代码 void D
阅读QSqlTableModel documentation我看到两种获取模型的方法: QSqlTableModel *model = new QSqlTableModel(parentObject,
如果我这样做: QSqlQuery searchQuery(QString("select * from people where id = %1").arg(1)); if (searchQuery
我有派生自 QSqlRelationalTableModel 的类。我使用 SQLite 数据库。我需要更改数据库文件。我关闭旧的数据库文件,调用 SetDatabaseName("path to n
我正在使用 QSqlTableModel 和 QTableView 来查看 SQLite 数据库表。 我希望表每隔一秒左右自动刷新一次(它不会是一个非常大的表 - 几百行)。我可以这样做——就像这样:
我将 QTableView 与 QSqlTableModel 一起使用。在我看来,我不显示包含记录 ID 的列。如果未显示在任何列中,如何获取所选行的 id? 感谢帮助 :) 最佳答案 你也可以直接从
我正在尝试将一个信号分配给一个按钮,以便它调用一个过滤并在 tableView 上显示特定数据的函数。 但是当我点击按钮时它说: Type error: setFilter(self, str) to
我有一个QTableView和QSqlTableModel。当我更新QTableView中的单元格时,我正在调用“ submitall”函数来更新数据库。 “ Submitall”已激活,但数据库中没
我的同事发现了 QSqlTableModel 的下一个问题: #define VARIANT_1 class SomeClass : public QWidget { Q_OBJECT pub
我看过很多讨论类似问题的教程/解释,但我不知道如何将其应用于这种情况。 我是一名 Qt/C++ 新手,正在尝试构建连接到一个简单的 GUI 应用程序SQLite 数据库。我有 UI 表单,它是使用 Q
我有一个包含重复记录的表。 我使用以下代码将数据放入 QTableView 中: QSqlTableModel *dataModel = new QSqlTableModel(); dataModel
我有一个连接到 MySQL 数据库的 PyQt5 应用程序。我制作了连接到同一模型的两个 View 。 View 从数据库中提取数据就好了。我对一个字段中的任何字段所做的任何更改都会反射(reflec
我有一个 tableView 示例: 比如当数据列状态为S时。表格的背景颜色为绿色,when N 为红色。 我想要的例子: 我的代码: MainWindow::MainWindow(QWidget *
我正在尝试更新一条记录,我有这个: tableModel->select(); QModelIndex index = ui.tableView->currentIndex(); QString sq
我是一名优秀的程序员,十分优秀!