SQLITE_EXTERN char *sqlite3_data_directory;
如果此全局变量被设置为指向一个字符串,该字符串是文件夹(又称目录)的名称,则所有使用相对路径名指定的数据库文件,以及在使用内置 Windows VFS 时由 SQLite 创建或访问的数据库文件,都将被视为相对于该目录。如果此变量为 NULL 指针,则 SQLite 假设所有使用相对路径名指定的数据库文件都相对于进程的当前目录。只有 Windows VFS 会使用此全局变量;Unix VFS 会忽略它。
在数据库连接打开时更改此变量的值会导致数据库损坏。
在一个以上线程中读取或修改此变量是不安全的。如果在另一个线程中同时使用 数据库连接,则读取或修改此变量也是不安全的。此变量的目的是在进程初始化期间,在调用任何 SQLite 接口例程之前设置一次,并且此后保持不变。
data_store_directory 编译指令 可能会修改此变量,并使其指向从 sqlite3_malloc 获取的内存。此外,data_store_directory 编译指令 始终假定此变量指向的任何字符串都存储在从 sqlite3_malloc 获取的内存中,并且编译指令可能会尝试使用 sqlite3_free 释放该内存。因此,如果直接修改此变量,则应将其设置为 NULL 或使其指向从 sqlite3_malloc 获取的内存,否则应避免使用 data_store_directory 编译指令。