以下是一个简单的从旧表迁移数据到新表的完整例子,使用MySQL数据库和Qt的QSqlQuery类进行操作:
// 假设我们有一个旧表 old_table 和一个新表 new_table
// 创建连接并打开数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("your_database_name");
db.setUserName("your_username");
db.setPassword("your_password");
if (!db.open()) {
qWarning() << "无法连接到数据库";
return;
}
// 创建旧表和新表(如果不存在)
QString createOldTableQuery = "CREATE TABLE IF NOT EXISTS old_table (id INT PRIMARY KEY, name VARCHAR(50), age INT)";
QString createNewTableQuery = "CREATE TABLE IF NOT EXISTS new_table (id INT PRIMARY KEY, name VARCHAR(50), age INT)";
QSqlQuery query;
query.exec(createOldTableQuery);
query.exec(createNewTableQuery);
// 查询旧表数据
QString selectOldDataQuery = "SELECT * FROM old_table";
query.exec(selectOldDataQuery);
while (query.next()) {
int id = query.value("id").toInt();
QString name = query.value("name").toString();
int age = query.value("age").toInt();
// 将查询结果插入新表
QString insertNewDataQuery = QString("INSERT INTO new_table (id, name, age) VALUES (%1, '%2', %3)").arg(id).arg(name).arg(age);
if (!query.exec(insertNewDataQuery)) {
qWarning() << "插入数据失败:" << query.lastError().text();
}
}
// 关闭数据库连接
db.close();
请根据你的实际表结构和需求调整以上代码。确保在执行数据库迁移之前进行备份,并正确处理错误和异常情况。
内容由零声教学AI助手提供,问题来源于学员提问