SQLITE, I delete que sqlite file and the database still loading data from the file...
-
The getDataBaseName return this: “C:\ProgramData\MyApp\database.sqlite"!
I will delete, but this is not the reason of my problem... right? -
Hi, you had already deleted that file, didn't you?
So deleting again should bring a similar result.I suggest you search for files "database.sqlite" on your machine and - if there is any - rename it and restart your program.
If not, you should try to get info of the database in debug mode in your app when it shows the 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
-
Well... I as thinking about in memory sqlite, but the file is updated... I open in FireFox addon "Sqlite Manager" and query stuff and works well!
-
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!!!
-
I do not work with Windows very often so I hope its not a silly question: Can a hidden file of that name exist?
-
Well check it and nothing there!
I always use Linux, but in this project I make everything on windows...
I'm change my way to connect the database right now... maybe I can solve that... -
Well...
I try and Try... and...
Appears some kind of cache, I not really sure or maybe some bug on Qt 5.2...
I really don't know what do to anymore... -
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*
@ -
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]