当前位置:编程学习 > wap >>

新手求教 关于SQLITE数据库备份问题

      QT 连接sqlite3数据库之后 想实现数据库的备份功能,将数据库的结构及内容导出到txt文本文件 但是导出sqlite3的内容似乎要用到 .output  这样的语句,而这些语句在QT中无法识别
  用什么方法才能在QT 中改变数据库数据的输出方式  或者让QT 能够执行类似  .output  这样的语句 
--------------------编程问答--------------------
#include <QSqlTableModel>
#include <QSqlRecord>
#include <QFile>

int outputToTxt(QString databaseName, QString tableName, QString txtName);

int outputToTxt(QString databaseName, QString tableName, QString txtName)
{
    QSqlTableModel* model;
    QStringList    recordList;

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName(databaseName);
    if (!db.open()) {
        return 1;
    }

    model = new QSqlTableModel(0,db);
    if(model == NULL)
    {
        db.close();
        return 2;
    }

    model->setTable(tableName);
    model->select();

    int ncolumn = model->columnCount();
    QString temp;
    //字段名
    for(int i=0;i< (ncolumn-1); i++)
    {
        temp += QString::fromLocal8Bit("%1|").arg(model->headerData(i,Qt::Horizontal).toString());
    }
    temp += QString::fromLocal8Bit("%1").arg(model->headerData(ncolumn-1,Qt::Horizontal).toString());
    recordList.push_back(temp);

    //数据
    int nrow = model->rowCount();
    for(int j =0; j < nrow; j++)
    {
        temp.clear();
        for(int k =0; k < (ncolumn-1);k++)
        {
            temp += QString::fromLocal8Bit("%1|").arg(model->record(j).value(k).toString());
        }
        temp += QString::fromLocal8Bit("%1").arg(model->record(j).value(ncolumn-1).toString());
        recordList.push_back(temp);
    }

    delete model;
    db.close();

    //写入到txt
    QFile outFile(txtName);
    if (!outFile.open(QIODevice::WriteOnly |QIODevice::Truncate | QIODevice::Text))
    {
      return 3;
    }

    QTextStream out(&outFile);

    for(int i=0; i < recordList.count(); i++)
    {
        out<<recordList[i]<<"\n";
    }
    outFile.close();

    return 0;
}
--------------------编程问答-------------------- 这方法太赞了,找了好久终于找到了这个解决办法,感激不尽呀。。。 --------------------编程问答-------------------- fetionone兄能否把从txt文件恢复到数据表格中的代码也贴出来参考参考呀? --------------------编程问答-------------------- 我要在把通话记录读取过来,在进行排序,还要把结果备份与恢复,要怎么实现啊 --------------------编程问答-------------------- 是在android手机上的,用sqlite,我是新手,需要帮助,谢谢
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,