2

私はsqlcipherApiドキュメントの例に従っています: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 encrypted.t1(a,b);には(a、b)があり、2番目の行には

INSERT INTO encrypted.t1 SELECT * FROM t1;ではない。

最初の行に(a、b)があるのはなぜですか、それは何のためですか?

4

1 に答える 1

3

この場合、aとbは列名です。ドキュメントのその例の紹介では、「単一のテーブルt1(a、b)を持つunencrypted.dbと呼ばれる標準のSQLiteデータベースがあると仮定する」という重要なポイントを説明しています。それで:

  1. 最初の行は、新しい暗号化されたデータベースを接続します。
  2. 次に、同じ名前と列指定で暗号化されたデータベースに2番目のテーブルが作成されます。
  3. 3行目は、元のテーブルからすべてのデータを選択し、暗号化されたデータベースの新しいテーブルに挿入します。

2つのテーブルの列は同一であるため、テーブルの列を明示的にリストする必要はありません。

于 2011-10-18T19:23:06.610 に答える