Verify if file in destination path does not exist before copy
const QString filedest = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/data/app/") + "mydatabase.db";
if (!QFile::exists(filedest)) {
// you can use QVERIFY(QFile::copy(src, filedest));
QFile::copy(src, 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 have connected to our db and execute some query. We verify if file exists, if not we copy it to some location. The result from sql we can assign to variables, then use them as String in WebView etc.