In window XP, I failed to open a database file comes from Android phone.
-
Would you PLEASE be patient!
3 and half hours and you're moaning about no response. You're not serious, are you?If you want to know what's going on, call "QSqlDatabase::lastError() ":http://doc.qt.nokia.com/latest/qsqldatabase.html#lastError on your db on the open and "QSqlQuery::lastError() ":http://doc.qt.nokia.com/latest/qsqlquery.html#lastError on the failed query. They will tell you what happened.
-
Hi, Volker:
Thanks for your reminders!!
I am just too emotional...And, after checking the error, it shows "No query Unable to fetch row".
But, I have no idea on why I get this error.
Again, I have to say this AP works well under Ubuntu.
So, Do I need to modify anything for that?Thanks a lot.
BR,
Pico -
[quote author="pico" date="1297428894"] And, after checking the error, it shows "No query Unable to fetch row".
But, I have no idea on why I get this error.
Again, I have to say this AP works well under Ubuntu.
So, Do I need to modify anything for that?
[/quote]Is the database file available?
Is it in the right directory?
Is the sqlite version the same? -
Hi, Volker:
[quote author="Volker" date="1297464678"]
Is the database file available?
Is it in the right directory?
Is the sqlite version the same?
[/quote]This database is OK to perform action on Ubuntu on the same codes.
And, for the version, I have no many ideas on that.
However, I think it is 3.6.22.In addition, opening the database seems no error...
Thanks a lot.
BR,
Pico -
Hi, Volker:
I also guess this is a sqlite question, however, I am not familiar with sqlite.
And, I also download the sqlite command line tool to test it.
It works well...And, I also use some other commercial tool to open it.
It is OK, too.In addition, I find a command "Repair" in a tool. If I do it on those database files, I can open them by Qt's sql dll.
So, I would like to know if Qt's sqlite driver doesn't have error tolerance on mismatched SQL files.
If so, does it mean I have to use another sqlite driver?
Thanks a lot.
BR,
Pico -
Hi, Volker:
Is there anyway to send you the database file?
Could you help me to check it?
Because I use the sqlite tool downloaded from the SQL web, it works well.So, I can not understand why I can not use the Qt's SQL dll to handle that.
Thanks a lot.
BR,
Pico -
Hi, Sir:
The link to this database file is http://dl.dropbox.com/u/21382345/blake_cruiser.db
If possible, please help me to know what I do wrong.Thanks a lot.
BR,
Pico[EDIT: fixed link, Volker]
-
Hi, Volker:
This database file comes from Android phone.
I just copy it out, and try to parse it.But, I can use sqlite3_analyzer downloaded from "www.sqlite.org" to open it.
So, I guess this might be related to version.
If so, could you give me a piece of advice to solve the version issue?
For example, could I get the updated library from Qt's web for SQL?
Or, something like that...BR,
Pico -
Ok, problem found: The SQLite version in Android is newer than that bundled with Qt. Actual problem is, that it is too new and contains a "WAL feature":http://www.sqlite.org/wal.html that older versions cannot deal with.
- Android has SQLite 3.7.x
- Qt 4.7.1 has SQLite 3.6.19
I can easily change a working database file to be locked out of a 3.6.x client by changing that mentioned WAL flag.
The good news is: You can build the SQLite plugin of Qt with a newer version of SQLite. The docs have instructions on how to do this in section "QSQLITE for SQLite (Version 3 and Above)":http://doc.qt.nokia.com/4.7/sql-driver.html#qsqlite of the "SQL Database Drivers":http://doc.qt.nokia.com/4.7/sql-driver.html page. Just use the newest SQLite version from the webpage.
On Jira, there is an open bug report "QTBUG-16607":http://bugreports.qt.nokia.com/browse/QTBUG-16607 which requests an update of the built in SQLite version to 3.7.x. You can vote for it, this may accelerate it a bit.
-
Hi, Volker:
Although I followed what you showed to me, I failed to generate a QtSql4.dll.
I could get libqsqlite4.a, qsqlite4.dll, and something else.
However, I can still NOT make a sql query successfully.Could you give me more details for how to build a new sql driver and install it?
Thanks a lot.
BR,
Pico -
It could be, that your application grabs an old version of the plugin. Make sure, that
"QCoreApplication::addLibraryPath() ":http://doc.qt.nokia.com/4.7/qcoreapplication.html#addLibraryPathYou can check the version of the used SQLite with
@
select sqlite_version();
@Issue this in your program and check that you actually use the newly built plugin, not the old one.