如何从QML自动测试访问本地sqlite数据库? 我有一个用C++写在QML的应用程序。我使用Qt快速测试在QML中编写了自动化UI测试。作为测试的一部分,我需要通过UI对SQLite数据库中的条目进行更改,并希望使用简单的SQLite查询验证对数据库所做的更改

如何从QML自动测试访问本地sqlite数据库? 我有一个用C++写在QML的应用程序。我使用Qt快速测试在QML中编写了自动化UI测试。作为测试的一部分,我需要通过UI对SQLite数据库中的条目进行更改,并希望使用简单的SQLite查询验证对数据库所做的更改,sqlite,qt,qml,Sqlite,Qt,Qml,我希望能够使用QtQuick.LocalStorage或其他javascript SQLite库来实现这一点,但我还没有找到解决方案 QtQuick.LocalStorage似乎无法轻松打开现有的.db文件,似乎是为存储临时应用程序数据而设计的 SQL.js似乎很有可能,但由于它打包为SQL-asm.js和SQL-wasm.js,我无法轻松地将该功能导入到.qml测试文件中 e、 g.以下快速示例: import QtTest 1.2 import QtQuick.LocalStorage 2.

我希望能够使用QtQuick.LocalStorage或其他javascript SQLite库来实现这一点,但我还没有找到解决方案

QtQuick.LocalStorage似乎无法轻松打开现有的.db文件,似乎是为存储临时应用程序数据而设计的

SQL.js似乎很有可能,但由于它打包为SQL-asm.js和SQL-wasm.js,我无法轻松地将该功能导入到.qml测试文件中

e、 g.以下快速示例:

import QtTest 1.2
import QtQuick.LocalStorage 2.9 as Sql

function test_database_connection(){
    var database = "../Database/d.db"
    db = Sql.openDatabaseSync(database, version, description, estimated_size, callback(db))
    db.transaction(function (tx) {
        var rs = tx.executeSql('SELECT * FROM Songs where id is "5" ');
    }
}
我希望它能打开我的数据库“d.db”,并对其执行查询。相反,它似乎只是在某处创建一个新的空“d.db”并运行查询

有更简单的方法吗?

您可以使用该命令 QSqlDatabase db=QSqlDatabase::addDatabase(“QSQLITE”);
db=setDatabaseName(数据库)

openDatabaseSync()
的第一个参数是数据库的名称,而不是路径。要设置不同于您之前必须调用的默认路径,请执行以下操作。另外,我记得真正的文件名是
名称
的一些散列,但应该检查一下。