Small. Fast. Reliable.
Choose any three.

SQLite C接口

反序列化数据库

int sqlite3_deserialize(
  sqlite3 * db,/ *数据库连接* /
  const char * zSchema,/ *要通过反序列化重新打开的数据库* /
  unsigned char * pData,/ *序列化的数据库内容* /
  sqlite3_int64 szDb,/ *反序列化中的字节数* /
  sqlite3_int64 szBuf,/ *缓冲区pData []的总大小* /
  无符号mFlags / *零个或多个SQLITE_DESERIALIZE_ *标志* /
);

sqlite3_deserialize(D,S,P,N,M,F)接口使 数据库连接D与数据库S断开连接,然后根据P中包含的序列化将S作为内存数据库重新打开。序列化的数据库P为N字节大小。M是缓冲区P的大小,可能大于N。如果M大于N,并且F中未设置SQLITE_DESERIALIZE_READONLY位,则只要允许SQLite向内存数据库添加内容,就可以总大小不超过M个字节。

如果在F中将SQLITE_DESERIALIZE_FREEONCLOSE位置1,则SQLite将在数据库连接关闭时在序列化缓冲区上调用sqlite3_free()。如果将SQLITE_DESERIALIZE_RESIZEABLE位置1,则SQLite将尝试使用sqlite3_realloc64()增加缓冲区大小,前提是对数据库的写操作导致缓冲区的大小大于M个字节。

如果数据库当前正在进行读取事务或参与备份操作,则sqlite3_deserialize()接口将失败,并显示SQLITE_BUSY。

如果sqlite3_deserialize(D,S,P,N,M,F)由于任何原因而失败,并且如果参数F中的SQLITE_DESERIALIZE_FREEONCLOSE位置1,则 在返回之前在参数P上调用sqlite3_free()

仅当使用SQLITE_ENABLE_DESERIALIZE选项编译SQLite时,此接口才可用 。

另请参见 对象常量函数的列表