SQLite常见问题解答

http://tech.ddvip.com   2008年02月19日    社区交流

关键字: SQLite

本文详细介绍SQLite常见问题解答

  如果删除了大量数据,而又想缩小数据库文件占用的空间,执行 VACUUM 命令。 VACUUM 将会从头重新组织数据库。这将会使用数据库有一个空的“自由链表”, 数据库文件也会最小。但要注意的是,VACUUM 的执行会需要一些时间 (在SQLite开发时,在Linux上,大约每M字节需要半秒种),并且, 执行过程中需要原数据库文件至多两倍的临时磁盘空间。

  对于 SQLite 3.1版本,一个 auto-vacumm 模式可以替代 VACUUM 命令。 可以使用 auto_vacuum pragma 打开。

  (13) 我可以在商业产品中使用SQLite而不需支付许可费用吗?

  是的。SQLite 在 public domain。 对代码的任何部分没有任何所有权声明。你可以使用它做任何事。

  (14) 如何在字符串中使用单引号(')?

  SQL 标准规定,在字符串中,单引号需要使用逃逸字符,即在一行中使用两个单引号。在这方面 SQL 用起来类似 Pascal 语言。 SQLite 尊循标准。如:

  INSERT INTO xyz VALUES('5 O''clock');

  (15) SQLITE_SCHEMA error是什么错误?为什么会出现该错误?

  当一个准备好的(prepared)SQL语句不再有效或者无法执行时, 将返回一个 SQLITE_SCHEMA 错误。发生该错误时,SQL语句必须使用 sqlite3_prepare() API来重新编译. 在 SQLite 3 中, 一个 SQLITE_SCHEMA 错误只会发生在用 sqlite3_prepare()/sqlite3_step()/sqlite3_finalize() API 执行 SQL 时。而不会发生在使用 sqlite3_exec()时。 在版本2中不是这样。

  准备好的语句失效的最通常原因是:在语句准备好后, 数据库的模式又被修改了。另外的原因会发生在:

  数据库离线:DETACHed.

  数据库被 VACUUMed

来源:豆豆网转载    责编:豆豆技术应用

正在加载评论...