class Worker : public QThread
{
Q_OBJECT
public:
Worker()
{
// Here?
QSqlDatabase::addDatabase("QSQLITE", "connectionName");
...
}
void Worker::run()
{
// Or here?
QSqlDatabase::addDatabase("QSQLITE", "connectionName");
...
}
...
};
连接只能在创建它的线程中使用。 在线程之间移动连接或从中创建查询 不支持不同的线程。另外,第三方 QSqlDrivers使用的库可以对其施加进一步的限制 在多线程程序中使用SQL模块。查阅手册 数据库客户端以获取更多信息
我探索了一些相关的Qt类,我发现没有与线程和数据库连接相关的代码。似乎Qt将这项工作留给了数据库驱动程序,因为 不支持在线程之间移动连接或从其他线程创建查询。
我认为,如果我们不同时使用两个线程的连接,那么创建(和使用)连接的位置和时间并不重要。
答案 0 :(得分:1)
:: run方法是线程入口点。它将在新线程中执行。 QThread构造函数将在线程中被执行,其中QThread被初始化并启动。因此,如果你要使用数据库对象IN创建的线程,那么你确保它将在这个新线程中被调用