小巧。快速。可靠。
三选二。

SQLite C 接口

文件打开操作的标志

#define SQLITE_OPEN_READONLY         0x00000001  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE        0x00000002  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_CREATE           0x00000004  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_DELETEONCLOSE    0x00000008  /* VFS only */
#define SQLITE_OPEN_EXCLUSIVE        0x00000010  /* VFS only */
#define SQLITE_OPEN_AUTOPROXY        0x00000020  /* VFS only */
#define SQLITE_OPEN_URI              0x00000040  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MEMORY           0x00000080  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MAIN_DB          0x00000100  /* VFS only */
#define SQLITE_OPEN_TEMP_DB          0x00000200  /* VFS only */
#define SQLITE_OPEN_TRANSIENT_DB     0x00000400  /* VFS only */
#define SQLITE_OPEN_MAIN_JOURNAL     0x00000800  /* VFS only */
#define SQLITE_OPEN_TEMP_JOURNAL     0x00001000  /* VFS only */
#define SQLITE_OPEN_SUBJOURNAL       0x00002000  /* VFS only */
#define SQLITE_OPEN_SUPER_JOURNAL    0x00004000  /* VFS only */
#define SQLITE_OPEN_NOMUTEX          0x00008000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_FULLMUTEX        0x00010000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_SHAREDCACHE      0x00020000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_PRIVATECACHE     0x00040000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_WAL              0x00080000  /* VFS only */
#define SQLITE_OPEN_NOFOLLOW         0x01000000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_EXRESCODE        0x02000000  /* Extended result codes */

这些比特值旨在用于 sqlite3_open_v2() 接口的第 3 个参数以及 sqlite3_vfs.xOpen 方法的第 4 个参数。

只有标记为“适用于 sqlite3_open_v2()”的标志才能用作 sqlite3_open_v2() 接口的第三个参数。其他标志在历史上一直被 sqlite3_open_v2() 忽略,尽管 SQLite 的未来版本可能会更改,以便在将任何不允许的比特传递到 sqlite3_open_v2() 时引发错误。应用程序不应依赖历史行为。

特别注意,将 SQLITE_OPEN_EXCLUSIVE 标志传递到 sqlite3_open_v2() *不会*导致使用 O_EXCL 打开底层数据库文件。将 SQLITE_OPEN_EXCLUSIVE 传递到 sqlite3_open_v2() 在历史上一直是无操作,并且可能会在 SQLite 的未来版本中成为错误。

另请参阅 对象常量函数 列表。