如何以及何时在SQLite中执行PRAGMA语句?

时间:2018-10-28 01:52:59

标签: sqlite

我正在使用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语句是否已执行并生效?

谢谢

1 个答案:

答案 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;

结果:-

enter image description here