Encryption 在VisualStudio上使用SqlCipher

Encryption 在VisualStudio上使用SqlCipher,encryption,console-application,sqlcipher,Encryption,Console Application,Sqlcipher,我已经为windows编译了SQLCipher,并在命令行中使用SQLCipher对数据库文件进行加密/解密。问题出现在我在VisualStudio中使用SQLCipher的最后一部分。 看起来应用程序跳过了这个代码行,因为它既不加密也不解密,我没有收到任何错误 if (sqlite3_exec(db, (const char*)"PRAGMA key ='password'", NULL, NULL, NULL) == SQLITE_OK){ printf("Accep

我已经为windows编译了SQLCipher,并在命令行中使用SQLCipher对数据库文件进行加密/解密。问题出现在我在VisualStudio中使用SQLCipher的最后一部分。 看起来应用程序跳过了这个代码行,因为它既不加密也不解密,我没有收到任何错误

if (sqlite3_exec(db, (const char*)"PRAGMA key ='password'", NULL, NULL, NULL) == SQLITE_OK){
            printf("Accepted Key\n");
        };
谁能告诉我怎么了?或者提供一些示例C代码?
提前感谢。

这里有几个项目需要解决。首先,从sqlite3_exec检查SQLITE_OK作为状态代码并不意味着提供的密码对数据库有效。为了验证这一点,一旦数据库设置了密钥,我们建议您执行以下查询:

从sqlite_master中选择count*

无论应用程序架构的状态如何,此表始终存在

接下来,为了验证您已经在应用程序中正确集成了SQLCipher库,我们可以查询数据库中的PRAGMA cipher_版本;由图书馆报道。下面是这样做的示例:

int rc;
sqlite3 *db;
sqlite3_stmt *stmt;

rc = sqlite3_open(":memory:", &db);
if(rc != SQLITE_OK){
  printf("failed to open database\n");
}
rc = sqlite3_prepare(db, "PRAGMA cipher_version;", -1, &stmt, NULL);
rc = sqlite3_step(stmt);
if(rc == SQLITE_ROW){
  printf("SQLCipher version:%s\n", sqlite3_column_text(stmt, 0));
}
sqlite3_finalize(stmt);
if(db != NULL){
  sqlite3_close(db);
}