On 4/17/15, Janke, Julian <julian.janke at capgemini.com> wrote: > Hello, > Thanks for your reply. > > I changed my code again: > > 1) rc = sqlite3_open(dbPath, &db); --> SQLITE_OK > 2) rc = sqlite3_exec(db, "DROP TABLE IF EXISTS nosuchtable;", > testCallbackPrint, 0, &zErrMsg); > 3) rc = sqlite3_prepare_v2(db, "PRAGMA journal_mode=WAL;", 24, &stmt, NULL); > --> SQLITE_OK > 4) rc = sqlite3_step(stmt); --> SQLITE_DONE
I do not understand this. "PRAGMA journal_mode" should always give a return value, even when it fails. sqlite3_step() should have returned SQLITE_ROW. Please try instead, "EXPLAIN PRAGMA journal_mode=WAL". Verify that you get multiple rows of output in that case. > 5) rc = sqlite3_exec(db, "DROP TABLE IF EXISTS nosuchtable;", > testCallbackPrint, 0, &zErrMsg); > 6) txt = sqlite3_column_text (stmt, 0); --> returns an empty string > 7) rc = sqlite3_finalize(stmt); --> SQLITE_OK > 8) rc = sqlite3_close(db); --> SQLITE_OK > > Repeated the same steps with > > 3) rc = sqlite3_prepare_v2(db, "PRAGMA journal_mode;", 24, &stmt, NULL); --> > SQLITE_OK > > To my knowledge, at line 4 SQLITE_ROW instead of SQLITE_DONE should be > returned. > > "These routines may only be called when the most recent call to > sqlite3_step() has returned SQLITE_ROW and neither sqlite3_reset() nor > sqlite3_finalize() have been called subsequently." > > It looks as if all PRAGMA instructions are completely ignored, > since the query for the status of the JOURNAL_MODE returns no result. > > Is it possible that I have turned off PRAMAs by anything or something is > missing, so PRAMAs can run? > > Thanks for your help > > > -----Original Message----- > From: sqlite-users-bounces at mailinglists.sqlite.org > [mailto:sqlite-users-bounces at mailinglists.sqlite.org] On Behalf Of Simon > Slavin > Sent: Donnerstag, 16. April 2015 17:56 > To: General Discussion of SQLite Database > Subject: Re: [sqlite] Problems with pragma journal_mode > > > On 16 Apr 2015, at 2:33pm, Janke, Julian <julian.janke at capgemini.com> > wrote: > >> rc = sqlite3_step(stmt); >> --> returns SQLITE_DONE > > After the above two lines, print the value returned by > > sqlite3_column_text(stmt, 0) > > I'm not good at C off the top of my head but I think it's something like > > ----------------- > > const unsigned char * theText; > > [...] > > rc = sqlite3_prepare_v2(db, "PRAGMA journal_mode=WAL;", 24, &stmt, NULL); > > rc = sqlite3_step(stmt); > theText = sqlite3_column_text (stmt, 0); printf ("text returned: %s", > theText); > > rc = sqlite3_finalize(stmt); > > ----------------- > > Hope if I got it wrong someone else will tell you. By the way, you can also > check the values returned from sqlite3_finalize() and sqlite3_close() since > they can tell you useful things if something went wrong. > > Simon. > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > ________________________________ > > Firma: Capgemini Deutschland GmbH > Aufsichtsratsvorsitzender: Antonio Schnieder ? Gesch?ftsf?hrer: Dr. Michael > Schulte (Sprecher) ? Jost F?rster ? Dr. Peter Lempp ? Dr. Volkmar Varnhagen > > Amtsgericht Berlin-Charlottenburg, HRB 98814 > This message contains information that may be privileged or confidential and > is the property of the Capgemini Group. It is intended only for the person > to whom it is addressed. If you are not the intended recipient, you are not > authorized to read, print, retain, copy, disseminate, distribute, or use > this message or any part thereof. If you receive this message in error, > please notify the sender immediately and delete all copies of this message. > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > -- D. Richard Hipp drh at sqlite.org