sqlcipher附加数据库

标签 sqlcipher

我正在遵循 sqlcipher Api 文档中的示例:http://sqlcipher.net/sqlcipher-api#attach

ATTACH DATABASE 'encrypted.db' AS encrypted KEY 'secret'; -- create a new encrypted database
CREATE TABLE encrypted.t1(a,b); -- recreate the schema in the new database (you can inspect all objects using SELECT * FROM sqlite_master)
INSERT INTO encrypted.t1 SELECT * FROM t1; -- copy data from the existing tables to the new tables in the encrypted database
DETACH DATABASE encrypted;

第一行CREATE TABLE crypto.t1(a,b);有(a,b),第二行

INSERT INTO crypto.t1 SELECT * FROM t1; 不会。

第一行为什么有(a,b),它的作用是什么?

最佳答案

在本例中,a 和 b 是列名称。文档中对该示例的介绍解释了要点“假设您有一个名为 unencrypted.db 的标准 SQLite 数据库,其中包含一个表 t1(a,b)”。然后:

  1. 第一行附加一个新的加密数据库。
  2. 接下来,在加密数据库中创建具有相同名称和列规范的第二个表。
  3. 第三行从原始表中选择所有数据并将其插入到加密数据库中的新表中。

由于两个表中的列相同,因此无需显式列出表列。

关于sqlcipher附加数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7810730/

相关文章:

ios - 压缩适用于 iOS 的加密 SQLite FTS3 数据库

flutter - 如何在Flutter中加密SQLite数据库?

ios - SQLCipher编译错误

c++ - 是否有用于 SQLCipher 的 ODBC 驱动程序?

android - 调用 getString 时 SQL Cursor 抛出内存不足

android - 是否有正确的方法来测试用户提供的 SQLCipher 密码在 Android 上是否有效?

c++ - SQLite 是否使用 SQLCipher 扩展泄漏内存?

sqlite - 在MonoTouch中将SQLcipher与sqlite-net一起使用

ios - 核心数据加密类

objective-c - 不知道如何使用 SQLCipher 加密数据库