要在 Qt C++ 中实现 createTableCarriageInfo()
方法来创建一个名为 carriage_info
的数据库表,你需要使用 QSqlQuery
类执行 SQL 语句。以下是补全的代码示例:
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
bool createTableCarriageInfo(QSqlDatabase &m_db, const QString &strTableName) {
// 定义 SQL 创建表语句
QString createTableSQL = QString("CREATE TABLE IF NOT EXISTS `%1` ("
" `id` bigint(20) NOT NULL AUTO_INCREMENT,"
" `train_id` bigint(20) NULL DEFAULT NULL,"
" `carriage_index` int(11) NULL DEFAULT NULL,"
" `station_id` bigint(20) NULL DEFAULT NULL,"
" `carriage_type` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,"
" `carriage_no` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,"
" `speed` double NULL DEFAULT NULL,"
" `carriage_length` varchar(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,"
" PRIMARY KEY (`id`) USING BTREE"
") ENGINE=InnoDB AUTO_INCREMENT=1 "
"CHARACTER SET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=DYNAMIC;")
.arg(strTableName);
// 创建查询对象
QSqlQuery query(m_db);
// 执行创建表的 SQL 查询
if (!query.exec(createTableSQL)) {
qDebug() << "Failed to create table:" << query.lastError().text();
return false;
}
return true;
}
使用说明:
- 参数:函数接受两个参数,数据库连接(
m_db
)和表名(strTableName
)。 - SQL语句:我们构造了一个 SQL CREATE TABLE 的语句,该语句将根据提供的表名创建所需字段。
- 执行查询:使用
exec()
方法执行 SQL 命令,如果失败,会输出错误信息并返回 false。 - 成功返回:如果执行成功,函数将返回 true。
调用示例:
你可以像下面这样调用这个函数:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); // 示例使用 MySQL 数据库
db.setHostName("localhost");
db.setDatabaseName("your_database_name");
db.setUserName("username");
db.setPassword("password");
if (db.open()) {
if (createTableCarriageInfo(db, "carriage_info")) {
qDebug() << "Table created successfully!";
} else {
qDebug() << "Failed to create table.";
}
} else {
qDebug() << "Failed to connect to database:" << db.lastError().text();
}
请确保已经在项目中包含必要的 Qt 模块,例如 Qt SQL,并且正确设置数据库连接的信息。
内容由零声教学AI助手提供,问题来源于学员提问