我使用Qt编写了一个C ++程序。算法中的某些变量在程序外部和网页中已更改。每次用户更改网页中的变量值时,我都会修改一个预先创建的SQL数据库。现在,我希望我的代码在运行时更改变量值而不停止代码。有两种选择:
每n秒检查一次数据库并检索变量value->这不好,因为我必须每隔n秒检查一次数据库内容是否更改(多年来可能没有任何更改。而且我也不想检查数据库是否内容已更改)
value
每次更改数据库时,我的Qt程序都会发出一个信号,因此通过捕获该信号,我可以刷新变量值,这似乎是一个最佳解决方案,我想为此编写代码
我的代码的C ++部分是:
void Update Database() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("Mydataset"); db.setUserName("user"); db.setPassword("pass"); if(!db.open()) { qDebug()<<"Error is: "<<db.lastError(); qFatal("Failed To Connect"); } QSqlQuery qry; qry.exec("SELECT * from tblsystemoptions"); QSqlRecord rec = qry.record(); int cols = rec.count(); qry.next(); MCH = qry.value(0).toString(); //some global variables used in other functions MCh = qry.value(1).toString(); // ... this goes on ... }
哪有这回事。Qt事件循环和数据库没有以任何方式连接。您只需获取/更改/删除/插入/ …数据即可。选项1是您必须要做的。有多种方法可以在服务器端使用TRIGGER启动外部脚本,但这对您没有太大帮助。