SQLite APIs
-
-
Great topic :) Have you tried the solution for using "same database handler for QSqlDatabase and sqlite3_create_function proposed at this thread from stackoverflow.com":http://stackoverflow.com/questions/6289623/using-sqlite-custom-functions-with-qt ?
-
Yes I use the same code their but it crash when I call sqlite3_create_function.
I think it crashes in this linesqlite3_mutex_enter(db->mutex); in "sqlite3_create_function_v2" function sqlite3.c file
when entering mutexand I checked the sqlite3* values in debug mode it seems to be rubbish data or wrong casting
Hint : I used the same checks in the example and they all passed fine !!!!
-
[quote author="ahmedalaa" date="1363796613"]
Hint : I used the same checks in the example and they all passed fine !!!![/quote]Btw on what platform and OS do you run your code?
-
I am on windows 7 x64 and building a 64 bit application on VS 2012 using Qt 4.8.4
First I tried to use qt sqlite driver to link to these functions it gave me linking error
then I compiled the sqlite 3.7 as a library and linked in my application it linked successfullyand when I open the database with the sqlite APIs and don't use the qt handle of database it works fine
but when I use the qt handle of the database it crashes as I told you beforeQuestion here can I link to those function using qt sqlite driver only? OR even can I use the qt database handle in call of another sqlite library?
Thanks in advance :)
-
I have succeeded to make it link using qt sqlite driver by rebuilding the driver and redefining SQLITE_API by Q_SQL_EXPORT to export sqlite APIs
But it still crashes in the call of sqlite3_create_function
@QVariant v = db.driver()->handle();
// Create a handler and attach functions.
sqlite3* handler = static_cast<sqlite3*>(v.data()); @I think this casting is done wrongly since I have checked its member values and it has undefined data inside mutex object and other members
-
[quote author="ahmedalaa" date="1363863748"]
But it still crashes in the call of sqlite3_create_function
[/quote]Check the described solution for a "similar issue atNokia Developer":http://bit.ly/YqFHeY
bq. Ok i've resolved it!
Simply the snippet code works well if embedded into code before sqlite3_create_function()...it doesn't work if it is wrapped into a function like below:
sqlite * getDriver()
{
QT help code
return (handle);
}
returned value is not null, but doesn't work -
Thanks for your reply,
but it worked with me with a different approach.
all the queries I want to do with the custom function I just did it using the sqlite3 APIs instead of QSqlDatabaseand about the redifinition of the Q_SQL_EXPORT to export sqlite APIs it doesn't work as I said before
I was linking the sqlite3 lib also with me (My mistake :( ) However it link successfully when I build the qt sqlite driver as static library and link it with me in the application.I will try the other solution and inform you if it works with me or not.
Thank you for your help again :)