Check if the file path exists in the path before copying
const QString filedest = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/data/app/") + "mydatabase.db"; if (!QFile::exists(filedest)) {
Updated answer: Created a simple project
QT += core gui QT += sql QT += webkitwidgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = aawa TEMPLATE = app SOURCES += main.cpp DISTFILES += \ ../Desktop/before/MAINQ.db
where MAINQ.db is my sqlite file. And main.cpp
#include <QApplication> #include <qgraphicsscene.h> #include <QGraphicsView> #include <QVBoxLayout> #include <QPushButton> #include <QStandardPaths> #include <QFile> #include <QtSql> #include <QFileInfo> int main(int argc, char* argv[]){ QApplication app(argc, argv); QGraphicsScene* scene = new QGraphicsScene; QGraphicsView* view = new QGraphicsView(scene); //scene->setBackgroundBrush((Qt::white); QWidget *widget = new QWidget; view->setBackgroundBrush(Qt::yellow); QVBoxLayout* vlayout = new QVBoxLayout(widget); vlayout->addWidget(view); vlayout->addWidget(new QPushButton("print")); printf("ok.."); QSqlDatabase db; db = QSqlDatabase::addDatabase("QSQLITE"); //now full path of my db db.setDatabaseName("/Users/Ioan/Desktop/before/MAINQ.db"); if (db.open()) { qDebug() << "tabele in db " << db.tables(); QSqlQuery query(db); query.prepare( "SELECT id FROM user_cards"); if( !query.exec() ) qDebug() << query.lastError(); else { qDebug( "Selected!" ); QSqlRecord rec = query.record(); int cols = rec.count(); for( int c=0; c<cols; c++ ) qDebug() << QString( "Column %1: %2" ).arg( c ).arg( rec.fieldName(c) ); for( int r=0; query.next(); r++ ) for( int c=0; c<cols; c++ ) qDebug() << QString( "Row %1, %2: %3" ).arg( r ).arg( rec.fieldName(c) ).arg( query.value(c).toString() ); } qDebug() << "nice."; } else { qDebug() << "DB not open."; } const QString src = "/Users/Ioan/Desktop/before/MAINQ.db"; db.close(); // for close connection const QString filedest = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/data/app/") + "mydatabase.db"; QFile file( filedest ); if( !file.exists() ) { qDebug() << "The file" << file.fileName() << "does not exist."; // return 0; } else { QFile::copy(file, filedest); } widget->show(); return app.exec(); }
There we connected to our db and performed some request. We check if the file exists if we do not copy it to any place. We can assign the result from sql to variables, and then use them as String in WebView, etc.
source share