加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

只读方式打开sqlite数据库

发布时间:2020-12-12 20:20:38 所属栏目:百科 来源:网络整理
导读:在软件项目中加入Sunisoft在线更新软件,用户监测软件版本更新时自动检测和下载新版本软件。软件功能比较简单,主要是对sqlite文件的读

在软件项目中加入Sunisoft在线更新软件,用户监测软件版本更新时自动检测和下载新版本软件。软件功能比较简单,主要是对sqlite文件的读取。但是使用过程中发现只要连接上sqlite数据库,更新软件就会认为sqlite数据库文件已被修改,与服务器上的版本不符,需要更新该文件。通过md5比较,数据库被打开的时候并没有做任何修改。后来通过测试发现,只要文件被通过可写的方式打开,Sunisoft软件就会认为文件已经被修改,即使打开之后不做写操作。

找到原因,接下来就容易解决了。由于软件不需要对sqlite文件进行些操作,主要都是查询操作,因此可以以只读方式连接sqlite数据库。sqlite3提供只读方式打开文件接口。

int sqlite3_open_v2(
  const char *filename,/* Database filename (UTF-8) */
  sqlite3 **ppDb,/* OUT: SQLite db handle */
  int flags,/* Flags */
  const char *zVfs        /* Name of VFS module to use */
);

第一个参数为数据库文件路径,第二个参数是输出参数,为数据库操作指针地址。第三个参数为数据库访问方式,可通过此参数配置只读方式打开数据库,可以是SQLITE_OPEN_READONLY,SQLITE_OPEN_READWRITE和SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE中的一个,用于控制数据库的打开方式,可以和SQLITE_OPEN_NOMUTEX,SQLITE_OPEN_FULLMUTEX, SQLITE_OPEN_SHAREDCACHE,以及SQLITE_OPEN_PRIVATECACHE结合使用。第四个参数zVfs允许客户应用程序命名一个虚拟文件系统(Virtual File System)模块,用来与数据库连接。VFS作为SQlite library和底层存储系统(如某个文件系统)之间的一个抽象层,通常客户应用程序可以简单的给该参数传递一个NULL指针,以使用默认的VFS模块。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读