SQLITE, I delete que sqlite file and the database still loading data from the file...
-
Well... I try rename the the database on disk, and still loading then!
I try this: change the return of "getDataBaseName()" to “C:\ProgramData\MyApp\database.sqlite123”, and I got no database because there is no database with this name...
I really can't understand that... I reading some docs and examples to see the problem... -
Can you collect more information by using
@
qDebug() << database.databaseName();
qDebug() << database.hostName()
@I presume your database is in memory - see "In-Memory SQLite":https://www.sqlite.org/inmemorydb.html
-
Result:
@
qDebug() << database.databaseName();
qDebug() << database.hostName();
@"C:\ProgramData\MyApp\database.sqlite"
""Another very interesting thing is, the return of this code is TRUE:
@
static bool isDataBaseCreated()
{
QFile* arquivo = new QFile(getDataBaseName());
bool retorno = arquivo->exists();
qDebug() << "File name: " << getDataBaseName();
qDebug() << "File exists: " << retorno;
arquivo->close();
delete arquivo;
return retorno;
}File name: "C:\ProgramData\MyApp\database.sqlite"
File exists: true
@The problem is... the file is really not there!!!
-
well guys...
after some suffering I make some crazy code:@
static QSqlDatabase getDatabase()
{
QSqlDatabase database = QSqlDatabase::database(getDataBaseName());
qDebug() << "isOpen: " << database.isOpen();
qDebug() << "isValid: " << database.isValid();
if (! database.isValid())
{
database = QSqlDatabase::addDatabase(DRIVER, getDataBaseName());
database.setHostName(DB_HOSTNAME);
database.setDatabaseName(getDataBaseName());
database.removeDatabase();
isDataBaseCreated(database);} qDebug() << "Database host: " << database.hostName(); qDebug() << "Database name: " << database.databaseName(); return database; }
@
@
static bool isDataBaseCreated(QSqlDatabase db)
{
bool exists = false;
QFile* arquivo = new QFile(getDataBaseName());
exists = arquivo->exists();
if (exists)
{
arquivo.remove();
}
delete arquivo;
return exists;
}
@In resume:
Using my app, with "same code" and force the file to be deleted and force to database be removed...
Now appears to be solve my problem...
Question: It's recommend before close app do this:
@
database.close();
database.removeDatabase();
@Thanks all!
-
Yes I check, with and without Administrator cmd!
[quote author="andreyc" date="1396027781"]Did you try to check if file exists in command shell (cmd.exe)?
An explorer may hide some files.Run the following commands in cmd.exe
@
dir C:\ProgramData\MyApp\database.sqlite
dir C:\ProgramData\MyApp*
@[/quote]