2016-10-12 9 views
3

iOSプロジェクトでデータベース用のSqlite(sqlcipher)を使用しています。 iOS 9では、すべてが完璧に機能しています。今私は新しいXcodeを更新しました。しかし、DBの暗号化は現在動作していません。iOS 10でsqlcipherの動作が停止しました

sqlite3 *db1; 
    if (sqlite3_open([[self.databaseURL path] UTF8String], &db1) == SQLITE_OK) { 
     const char* key = [g_sqlite_key UTF8String]; 
     AZLog(@"%s",key); 
     sqlite3_key(db1, key, (int)strlen(key)); 
     if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) { 
      AZLog(@"Password is correct, or a new database has been initialized"); 
     } else { 
      AZLog(@"Incorrect password!"); 
     } 
     sqlite3_close(db1); 
    } 

誰でも手伝ってもらえますか?

ありがとうございます。

+0

あなたは働いていないとはどういう意味ですか?間違っていることを説明できますか? –

+1

今のところ、上記の方法でデータベースを暗号化していますが、データベースに書き込み操作を実行しようとすると、「ファイルが暗号化されているかデータベースではありません」というエラーが表示されます。 –

+0

以下の答えを確認しましたか? –

答えて

2

あなたがデータベースの暗号化がsqlcipherを使用しながら、読み書きやオープン作成権限を提供する必要があります。

sqlite3 *db1; 
    if (sqlite3_open_v2([[self.databaseURL path] UTF8String], &db1, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK) { 
     const char* key = [g_sqlite_key UTF8String]; 
     AZLog(@"%s",key); 
     sqlite3_key(db1, key, (int)strlen(key)); 
     if (sqlite3_exec(db1, (const char*) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) { 
      AZLog(@"Password is correct, or a new database has been initialized"); 
     } else { 
      AZLog(@"Incorrect password!"); 
     } 
     sqlite3_close(db1); 
    } 
関連する問題