在QT表中读数据到数据库

// 创建数据库连接
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");  // 创建一个 SQLite 数据库连接
    db.setDatabaseName("myDatabase.db");  // 设置数据库文件名
    if (!db.open()) {  // 打开数据库连接
        qDebug() << "Failed to connect to database" << db.lastError().text();
        return 1;
    }

    // 打开 Excel 文件
    xlsWorkBook* pWorkbook = xls_open("myData.xls", "UTF-8");  // 打开 Excel 文件
    if (!pWorkbook) {  // 判断是否打开成功
        qDebug() << "Failed to open Excel file";
        return 1;
    }

    // 读取数据
    xlsWorkSheet* pWorksheet = xls_getWorkSheet(pWorkbook, 0);  // 获取第一个工作表
    int rowCount = xls_getRowCount(pWorksheet);  // 获取工作表的行数
    int colCount = xls_getColCount(pWorksheet);  // 获取工作表的列数
    QList<QList<QVariant>> data;  // 定义一个二维列表用于存放数据
    for (int row = 0; row < rowCount; row++) {  // 遍历工作表的每一行
        QList<QVariant> rowData;  // 定义一个列表用于存放当前行的数据
        for (int col = 0; col < colCount; col++) {  // 遍历当前行的每一列
            xlsCell* pCell = xls_cell(pWorksheet, row, col);  // 获取当前单元格
            QVariant cellValue;  // 定义一个 QVariant 类型的变量用于存放单元格的值
            if (pCell) {  // 如果单元格存在
                if (pCell->str) {  // 如果单元格中是字符串
                    cellValue = QString::fromUtf8((const char*)pCell->str);  // 将字符串转换成 QString 类型
                } else {  // 如果单元格中不是字符串
                    cellValue = pCell->d;  // 直接获取数值
                }
            }
            rowData.append(cellValue);  // 将单元格的值加入当前行的列表中
        }
        data.append(rowData);  // 将当前行的列表加入总的二维列表中
    }

    // 导入数据
    QSqlQuery query;  // 创建一个 QSqlQuery 类型的对象,用于执行 SQL 语句
    query.prepare("INSERT INTO myTable (id, name, age) VALUES (?, ?, ?)");  // 准备插入语句
    for (const auto& rowData : data) {  // 遍历二维列表中的每一行
        int id = rowData.at(0).toInt();  // 获取 id 的值
        QString name = rowData.at(1).toString();  // 获取 name 的值
        int age = rowData.at(2).toInt();  // 获取 age 的值
        query.addBindValue(id);  // 将 id 的值绑定到查询语句中
        query.addBindValue(name);  // 将 name 的值绑定到查询语句中
        query.addBindValue(age);  // 将 age 的值绑定到查询语句中
        query.exec();

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值