问题标签 [qtsql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4147 浏览

c++ - 在 c++ Qt 中使用 prepare() 和 bindvalue()

我已经编写了一个基于 Qt 助手的 SQL 查询,它说您可以使用该prepare()方法而不是exec()然后您可以通过两个名为的方法传递参数:
bindvalue()addbindvalue()

这是我的问题的代码段:

输出 :

SELECT ID , Row , Col FROM sometable WHERE Row = ? 和科尔 = ?

而且我还使用了另一种建议的方式:

输出 :

SELECT ID , Row , Col FROM sometable WHERE Row = ? 和科尔 = ?

但是当我exec()正常使用时,它可以完美运行,并且会替换相应的值而不是“?”。

对此有什么解释吗?还是我应该使用普通的 exec()?

0 投票
1 回答
23707 浏览

c++ - 在 Qt 中使用 SQLite

我正在考虑使用 SQLite 作为我正在编写的 C++ 应用程序的后端数据库。我已经阅读了 trolltech 网站和 sqlite 上的相关文档,但信息似乎有点脱节,没有简单的片段显示完整的 CRUD 示例。

我想编写一组辅助函数,让我可以从我的应用程序中轻松地在 SQLite 中执行 CRUD 操作。

以下 smippet 是我设想编写的辅助函数的伪代码。对于如何“填充”存根函数的建议,我将不胜感激。特别令人沮丧的一件事是,在任何文档中都没有明确提及查询与运行查询的数据库之间的关系——因此暗示了某种默认连接/表。

在我的应用程序中,我需要能够显式指定运行查询的数据库,因此如果有任何答案说明如何显式指定查询中涉及的数据库/表(或与此相关的其他数据库操作),这将很有用)。

我的伪代码如下:

如果我要问的内容不清楚,我要问的是实现上述每个功能的正确方法是什么(可能除了第一个功能之外 - 当然除非它可以更好)。

[编辑]

通过删除明确指定表的要求来澄清问题(这已经在 SQL 查询中完成 - 我忘记了。感谢您指出 Tom

0 投票
2 回答
3495 浏览

c++ - QSqlQuery UPDATE/INSERT DateTime 与服务器的时间(例如 CURRENT_TIMESTAMP)

我正在使用 QSqlQuery 将数据插入 MySQL 数据库。目前我所关心的只是让它与 MySQL 一起工作,但理想情况下,我希望它尽可能独立于平台。

在 MySQL 的上下文中,我所追求的是最终得到有效执行以下查询的代码:

以下代码是我尝试过的,但它失败了:

我得到的错误是:Incorrect datetime value: 'CURRENT_TIMESTAMP()' for column 'time_field' at row 1 QMYSQL3: Unable to execute statement。我并不感到惊讶,因为我认为 Qt 在绑定值时会进行一些类型检查。

我已经深入研究了 Qt 文档,并且我知道如何,但是我在专门为支持 MySQL 的 CURRENT_TIMESTAMP() 函数或任何其他 DBMS 函数而设计的 API 中找不到任何东西。

有什么建议么?

0 投票
2 回答
162 浏览

sql - 我可以创建一个带有检查约束的表,其值依赖于 sql 查询吗

是否可以创建一个表,该表对其中一个列具有检查约束,该列的值位于另一个 sql 查询给出的结果集中

例如。

或任何类似的东西。

我不必在任何地方使用它,但仍然想知道。

0 投票
1 回答
970 浏览

c++ - 如何使用 QSqlTableModel 找到给定复合主键的 QModelIndex

我有这张桌子:

如何找到QModelIndex给定的复合主键,例如:

0 投票
1 回答
577 浏览

c++ - 如何从另一个用于搜索数据库的 QSqlQuery 中获取 QModelIndex(需要选择找到的项目)

处理我的 QSqlQueryModel 时遇到问题。我想在数据库中搜索一些项目并在我的 QTableView 中使用需要 QModelIndex 的 QItemSelectionModel 选择它们。

我不明白的是我应该如何搜索才能为我的模型/视图架构获取相应的 QModelIndex 。我不可能使用模型本身,因为它会弄乱视图中显示的项目。所以一个 QSqlQuery 或一个额外的 QSqlQueryModel 可能是一个选项,但是如何从他们的结果索引(.at()?)转换为适合我的模型/视图系统的 QModelIndex ......

提前致谢!

0 投票
1 回答
1411 浏览

qt - 如何在不修改原始 QSqlQueryModel 的情况下获取由 SELECT 查询(QSqlQuery)找到的行的 QModelIndex

我已经问过这个问题,但我被误解了,所以我试图准确地解决这个问题。

我正在使用 aQSqlQueryModel来显示来自 SQLite 数据库的数据,对于我使用QTableView.

现在我想实现一个“搜索/查找/替换”对话框,所以我用另外创建的数据库搜索数据库,QSqlQuery假设我找到了记录。

那么,我如何从QSqlQuery我的模型/视图架构的附加部分中找到这个记录呢?

问题是,我想突出显示找到的记录,因此我必须加载QItemSelectionModel一个特定的QModelIndex.

但我不知道如何做到这一点,也许我的计划是不可能的,还有其他可行的解决方案可以在数据库模型中查找文本并突出显示在QTableView.

我已经知道 , 和 的文档QSqlQueryQSqlQueryModel所以QModelIndex请不要只参考这些页面,这不会有太大帮助..

谢谢!

PS:还有一个相关的问题,尚未回答:“我如何使用 QSqlTableModel 找到给定复合主键的 QModelIndex”

0 投票
2 回答
12115 浏览

qt - 使用 sqlite3 驱动程序的 QSqlQuery 中的多个 sql 语句

我有一个包含几个 SQL 语句的文件,我想用它们来初始化一个新的 sqlite3 数据库文件。显然,sqlite3 只通过函数处理一个查询中的多个语句 sqlite3_exec(),而不是通过prepare/step/finalize函数。没关系,但我想直接使用 QtSQL api 而不是 c api。通过 QSqlQuery 加载同一个初始化文件只执行第一条语句,就像直接使用 sqlite3 api 中的 prepare/step/finalize 函数一样。有没有办法让 QSqlQuery 运行多个查询,而不必为每个语句单独调用 query.exec() ?

0 投票
1 回答
123 浏览

python - QSqlTalbeModel 的问题。表不显示

我有一个分配给表视图的 QsqlTableModel。我的问题是它没有填充表格视图中的表格。它仍然是空的,它说(无法找到桌子照片)-打印lastError.text()时-
函数retrieveShotResults ..(检查下面的代码)是测试是否有一张桌子叫做shots,是的,它打印一切都很好,并且连接也很好..但是表格视图仍然是空的。我做错什么了吗?
请帮助
谢谢是提前

class SqlModel(QtSql.QSqlTableModel):

0 投票
7 回答
20382 浏览

qt - 如何让 Qt 知道 QMYSQL 驱动程序

我正在尝试从 Qt 应用程序访问 MySql 数据库,但出现以下错误:

我觉得这很奇怪,因为我的 Qt 文件夹中有 libqsqlmysql.so。我什至尝试将 MySql 驱动程序编译为静态插件并将其添加到我的 .pro 文件中:

但这也会产生相同的运行时错误(它一定是找到了插件,因为编译应用程序没有错误)

我错过了什么?我想避免必须从源代码编译 Qt,因为这也必须在部署机器上无缝工作。

顺便说一句:即使我在 Linux 上进行开发和测试,我也需要支持 Windows。我会在 Windows 上遇到同样的问题吗?如何在 Linux 和 Windows 中编译和链接 MySql 驱动程序?

解决方案:

在遵循@Sergey 的建议之后,我对应用程序进行了跟踪,将输出重定向到 grep,这样我就可以搜索“mysql”,令我惊讶的是,应用程序没有在我有 libqsqlmysql.so 的 QTDIR/plugins/sqldrivers 中寻找插件,它正在查看 QTDIR/lib。将插件复制到 lib 文件夹后,MySql 连接工作。