qq_38190547 2018-12-22 19:31 采纳率: 0%
浏览 2183

QT 怎么样才能把Sqlite数据库表导出成txt或者csv?

static bool creatConnection()
{
//creat a database
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","connection1");
db.setDatabaseName("my1.db");
db = QSqlDatabase::database("connection1"); //建立数据库连接

if(!db.open()){
    QMessageBox::critical(0,"Cannot open database1",
                          "Unable to establish a database connection.",QMessageBox::Cancel);
    return false;
}

QSqlQuery query1(db);
query1.exec("create table shuju (Datetime QDateTime primary key,yanwu float,Temperature float,Humidity float)");

return true;

}

void SocketTCPServer::ReadDataFromSqlWriteToCSV(const QString &tableName,const QString &csvFileName)//将表导出为csv格式表格
{
QSqlTableModel *exportModel = new QSqlTableModel();

exportModel->setTable(tableName);
exportModel->select();
QStringList strList;//记录数据库中的一行报警数据
QString strString;
const QString FILE_PATH(csvFileName);

QFile csvFile(FILE_PATH);
if (csvFile.open(QIODevice::ReadWrite))
{
    for (int i=0;i<exportModel->rowCount();i++)
    {
        for(int j=0;j<exportModel->columnCount();j++)
        {
            strList.insert(j,exportModel->data(exportModel->index(i,j)).toString());//把每一行的每一列数据读取到strList中
        }
        strString = strList.join(", ")+"\n";//给两个列数据之前加“,”号,一行数据末尾加回车
        strList.clear();//记录一行数据后清空,再记下一行数据
        csvFile.write(strString.toUtf8());//使用方法:转换为Utf8格式后在windows下的excel打开是乱码,可先用notepad++打开并转码为unicode,再次用excel打开即可。
        qDebug()<<strString.toUtf8();
    }
    csvFile.close();
}

}

void SocketTCPServer::on_daochushuju_clicked()
{

ReadDataFromSqlWriteToCSV("shuju","shuju.csv");

}

  • 写回答

1条回答

  • qq_38190547 2018-12-22 11:32
    关注

    成功创建了csv文件,但是里面没有内容

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器