ZBLOG

createTableCarriageInfo() { QSqlQuery query(m_db); return true; } 用Qt C++ 补全上述接口 实现创建一个 strTableName为名称的数据库表,表字段如下 CREATE TABLE `carriage_info` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `train_id` bigint(20) NULL DEFAULT NULL, `ca...

要在 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22004

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?