以下是用QT实现插入1000条数据到数据库并把方法放进线程里的示例代码:

//在主线程中创建一个数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("mydatabase.db");
if(db.open()){
    qDebug()<<"Database connection established!";
}else{
    qDebug()<<"Database connection failed!";
}

//创建一个线程对象并启动
QThread* thread = new QThread();
MyWorker* worker = new MyWorker();
worker->moveToThread(thread);
thread->start();

//在工作线程中执行插入数据的方法
QMetaObject::invokeMethod(worker, "insertData", Qt::QueuedConnection);

//定义一个工作线程类
class MyWorker : public QObject{
    Q_OBJECT
public:
    MyWorker(){}
    ~MyWorker(){}

public slots:
    void insertData(){
        QSqlQuery query;
        for(int i=0; i<1000; i++){
            query.prepare("INSERT INTO mytable (id, name) VALUES (:id, :name)");
            query.bindValue(":id", i);
            query.bindValue(":name", "Name" + QString::number(i));
            query.exec();
        }
    }
};

在这个例子中,我们首先在主线程中创建了一个数据库连接,并启动了一个工作线程。然后我们调用QMetaObject::invokeMethod()方法,在工作线程中执行插入数据的方法。这个方法会使用QSqlQuery对象插入1000条数据到数据库中。注意,我们使用了Qt::QueuedConnection参数,这意味着我们的方法会被放进工作线程的事件队列中,等待工作线程的事件循环来处理。使用这个参数可以确保我们的方法会在工作线程中执行,而不是在主线程中执行


原文地址: https://www.cveoy.top/t/topic/chAL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录