You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用SQLite Append VFS将数据库附加至可执行文件?

如何用SQLite的Append VFS将数据库附加到可执行文件?

刚好之前实操过Append VFS的用法,这就给你一步步拆解具体操作:

1. 先搞定带Append VFS的SQLite工具

默认的SQLite并没有内置Append VFS模块,所以得先编译一个支持它的版本:

  • 从SQLite官网下载amalgamation版源码(就是那个单一的sqlite3.c文件,搭配sqlite3.h)
  • 用gcc编译时加上-DSQLITE_ENABLE_APPENDVFS选项,命令如下:
    gcc sqlite3.c -o sqlite3 -DSQLITE_ENABLE_APPENDVFS -lpthread -ldl
    
    编译完成后,你就得到了一个支持Append VFS的sqlite3命令行工具。

2. 准备好目标文件和数据库

  • 你要附加的可执行文件(比如my_app或my_app.exe),确保它能正常运行(附加操作不会破坏原文件)
  • 已经创建好的SQLite数据库文件(比如my_data.db,里面可以提前建好表和数据)

3. 执行附加操作

打开终端,用编译好的sqlite3工具来完成附加:

方式一:进入交互模式后附加

  1. 启动sqlite3交互工具:
    ./sqlite3
    
  2. 执行ATTACH命令,指定Append VFS:
    ATTACH DATABASE 'my_app?my_data.db' AS attached_db VFS 'appendvfs';
    
    • my_app是你的可执行文件名
    • my_data.db是要附加的数据库文件名
    • attached_db是附加后数据库的别名,方便后续操作

方式二:直接打开附加后的数据库

也可以直接在启动sqlite3时指定目标文件和VFS:

./sqlite3 'my_app?my_data.db' -vfs appendvfs

4. 验证操作是否成功

在sqlite3交互模式下,执行.databases命令,你会看到附加的数据库出现在列表里:

sqlite> .databases
main: /path/to/my_app?my_data.db
attached_db: /path/to/my_app?my_data.db

也可以执行查询语句验证数据是否能正常读取:

SELECT * FROM attached_db.my_table;

额外说明与注意事项

  • 附加后,原可执行文件完全可以正常运行,因为Append VFS是把数据库数据追加到文件末尾,不会修改原文件的有效内容
  • 你可以像操作普通SQLite数据库一样修改附加的数据库,所有变更都会自动写到可执行文件的末尾
  • 除了可执行文件,Append VFS还能把数据库附加到任何类型的文件上(比如文本、图片、压缩包等)
  • 如果是在自己的C程序中使用,只需调用sqlite3_open_v2()时,第三个参数传入"appendvfs",数据库名格式同样是"目标文件名?数据库名"

内容的提问来源于stack exchange,提问作者Kağan Kayal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:55