我正在使用SQLite。我只是想知道如何以及何时在sqlite中执行PRAGMA语句。
例如,我要执行:
PRAGMA schema.journal_mode = OFF;
基于https://www.sqlite.org/pragma.html#pragma_journal_mode上的文档,我想我应该在sqlite3_open()之后和创建任何表之前执行它。因此,我只是调用sqlite3_prepare_v2()和sqlite3_step()来执行上述PRAGMA,以提高数据库操作的性能。但是,在PRAGMA声明之后,似乎没有任何改变,并且性能没有得到改善。
在这种情况下,如何知道PRAGMA语句是否已执行并生效?
谢谢
答案 0 :(得分:1)
许多Pragma会返回设置值,此外,仅使用Pragma,不带参数将返回当前值(在某些情况下,只有后者会返回状态/当前值)。
PRAGMA journal_mode = OFF
将返回关闭结果。
PRAGMA journal_mode
将返回当前值而不影响它。
因此,就像在执行查询一样,结果集中的列名在许多情况下将与正在执行的编译指示相同。返回多个列的数据库(例如database_list)将返回特定于编译指示的列。
例如
PRAGMA journal_mode;
PRAGMA journal_mode = OFF;
PRAGMA journal_mode;
PRAGMA journal_mode = DELETE;
PRAGMA journal_mode;
结果:-