我刚刚开始使用SQLite,我想将所有应用程序数据写入文件,而不知道文件是否已存在; 使用'普通'文件,这很简单,但是对于SQLite,我不能创建一个表,如果它已经存在,并且如果主键已经存在,我就不能插入一行.
我基本上想做一些像"CREATE TABLE IF NOT EXISTS table .... else ... DELETE FROM table"这样的事情.必须有办法做到这一点,我怀疑有一些方法比其他方法更有效.例如,您认为使用现有表而不是删除和重新创建会更好,但这取决于检查它是否存在以及删除其内容所涉及的内容.
或者,有没有办法将数据库写入内存(sqlite3_open(":memory:",db)),然后获取其内容 - 作为字节数组或其他东西 - 写入文件?
对于所有数据库系统,首先DROP表然后重新创建它几乎总是更有效.使用DELETE将需要索引更新等,而简单的DROP也会删除索引,并且不会涉及创建事务日志条目对于SQLite,您可以执行DROP IF EXISTS来删除表条件.