QSqlDatabase sql语句同时插入两张表的数据
您可以使用事务来执行同时插入两张表的数据。事务可以确保在一组操作中要么全部成功,要么全部失败。
以下是一个示例代码,演示了如何使用事务同时插入两张表的数据:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("your_database_name");
db.setUserName("your_username");
db.setPassword("your_password");
bool ok = db.open();
if (ok) {
QSqlQuery query(db);
query.exec("START TRANSACTION"); // 开始事务
// 插入第一张表的数据
query.prepare("INSERT INTO table1 (column1, column2) VALUES (:value1, :value2)");
query.bindValue(":value1", "data1");
query.bindValue(":value2", "data2");
query.exec();
// 插入第二张表的数据
query.prepare("INSERT INTO table2 (column1, column2) VALUES (:value1, :value2)");
query.bindValue(":value1", "data3");
query.bindValue(":value2", "data4");
query.exec();
if (query.lastError().isValid()) {
qDebug() << "Error: " << query.lastError().text();
query.exec("ROLLBACK"); // 出现错误时回滚事务
} else {
query.exec("COMMIT"); // 提交事务
}
db.close();
} else {
qDebug() << "Database connection error: " << db.lastError().text();
}
在上述示例中,首先创建一个QSqlDatabase对象并打开数据库连接。然后,使用QSqlQuery对象执行事务的开始和结束语句。在事务中,使用prepare()方法准备插入语句,并使用bindValue()方法绑定参数。最后,根据插入结果决定是提交事务还是回滚事务。
请根据您的实际情况修改表名、列名和要插入的数据
原文地址: https://www.cveoy.top/t/topic/hNQN 著作权归作者所有。请勿转载和采集!