【问题标题】:After adding SQLcipher sqlite3_exec returns SQLITE_NOTADB添加 SQLcipher sqlite3_exec 后返回 SQLITE_NOTADB
【发布时间】:2012-09-26 11:27:04
【问题描述】:

我在他们的站点中将 SQLCipher 配置为教程...我可以编译并运行该项目。 但是 sqlite3_exec 在尝试执行语句时返回 SQLITE_NOTADB。

请在下面找到代码sn-p:

==================

NSString *dbPath = [self getDBPath];
BOOL success = [fileManager fileExistsAtPath:dbPath];           
if(success) {
    int sql_results = sqlite3_open([dbPath UTF8String], &SQLDB);            
    const char* key = [@"BIGSecret" UTF8String];
    sqlite3_key(SQLDB, key, strlen(key));
    if (sql_results == SQLITE_OK) {
        NSString *sql;
        const char *update_sql; 
        sql = [NSString stringWithFormat:@"DROP table %@",tablename];
        update_sql = [sql cStringUsingEncoding:NSUTF8StringEncoding];
        if(sqlite3_exec(SQLDB, update_sql, nil, nil, nil) == SQLITE_OK) { 
            NSLog(@"Good to go %@ dropped",tablename);
        }
        else {      
            NSLog(@"Bad Delete Cat SQL: %s -- %d", update_sql,sql_results); 
            NSLog(@"error code %i", sql_results);
        }

我无法解决问题,我哪里出错了......

谢谢,

【问题讨论】:

    标签: iphone objective-c ios ipad sqlcipher


    【解决方案1】:

    从邮件列表交叉发布:

    我在您的代码中注意到您只是输入块 sqlite3_open 如果数据库文件存在。你是不是偶然尝试 使用 SQLCipher 加密现有的标准 SQLite 数据库 这段代码?如果是这样,调用 sqlite3_key 将无法正常工作。你 而是想打开标准的 SQLite 数据库,附加一个新的 加密数据库,然后在两者之间导出数据。那里 这里有关于这个过程的更多细节:

    http://sqlcipher.net/sqlcipher-api/#sqlcipher_export

    处理加密数据库后,您可以调用 sqlite3_key 作为使用前的第一个操作。

    【讨论】:

    • 嗨斯蒂芬.....但是从 SQLCipher 的教程中......告诉 SQLCipher 加密数据库就像打开数据库并使用“PRAGMA key”或 sqlite3_key 函数一样简单。 #import ... sqlite3 db; if (sqlite3_open(@"/path/to/database", &db) == SQLITE_OK) { sqlite3_exec(db, "PRAGMA key = 'BIGsecret', NULL, NULL, NULL); if (sqlite3_exec(db, (const char) "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) { // 密码正确,或者数据库已经初始化 } else { // 密码错误!} }跨度>
    • 任何 iOS 示例,它解释了这个过程? ...感谢指导
    • @Ben861305 即创建一个新的加密数据库。它不会加密现有的标准 sqlite 数据库。为此,您需要打开原始数据库,附加加密数据库,然后将信息移过来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多