0

Sqlite Manager でデータベースを作成し、リソースにデータベースをエクスポートしました。プロジェクト フォルダにデータベースを直接再作成しようとしましたが、同じエラーが発生しました。理由がわかりません...ターミナルでデータベースを開こうとしましたが、データベースを開くことができません。

sqlite> .tables
Error: file is encrypted or is not a database

私はこのリンクについてすべてのことを行いますが、何もうまくいきません iOS 7でsqliteを使用するには?

int returnValue = (sqlite3_prepare_v2(databaseOK, [selectSql UTF8String], -1, &statement, NULL));   

この行により、returnValue に 26 が返されます

-(id) initDatabase{

if (self = [super init]) {
    //Nom de la base de données
    self.databaseName = @"externalDB.sqlite";

    // Obtenir le chemins complet de la base de donées
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    self.databasePath = [documentsDir stringByAppendingPathComponent:self.databaseName];

    NSLog(@"%@",self.databasePath);
}

return self;
}




-(NSArray*) selectALLArticle{
    sqlite3 *databaseOK=self.database;

    NSMutableArray* articles = [NSMutableArray new];

    if(sqlite3_open([self.databasePath UTF8String], &databaseOK) == SQLITE_OK) {

        NSString* selectSql =[NSString stringWithFormat:@"SELECT * FROM ART_TABLE"];

        sqlite3_stmt* statement = NULL;

        int returnValue = (sqlite3_prepare_v2(databaseOK, [selectSql UTF8String], -1, &statement, NULL));

        NSLog(@"Database returned error %d: %s", sqlite3_errcode(databaseOK), sqlite3_errmsg(databaseOK));

        if(returnValue == SQLITE_OK){

            while (sqlite3_step(statement) == SQLITE_ROW) { 
                Data* article = [Data new];
                article.ide = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement,0)];
                article.title = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 1)];
                article.chapo = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 2)];
                article.link = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 3)];
                article.linkImg = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 4)];
                article.pubDate = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 5)];
                article.creator = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 6)];
                article.description = (NSMutableString*)[NSString stringWithUTF8String:(const char*) sqlite3_column_text(statement, 7)];

                [articles addObject:article];
            }
            sqlite3_finalize(statement);
        }
    }

    sqlite3_close(databaseOK);

    return articles;

}

私のlogcatには次のものがあります:データベースがエラー26を返しました:ファイルが暗号化されているか、データベースではありません

この行で:NSLog(@"Database returned error %d: %s", sqlite3_errcode(databaseOK), sqlite3_errmsg(databaseOK));

SQLite Manager でデータベースを作成すると、別のテーブルが作成されました。彼の名前は sqlite_sequence です。それは何ですか?

前もってありがとう

4

3 に答える 3

0

ストック データベースをアプリにバンドルする場合、それは Documents ディレクトリではなく、アプリ バンドルにあります。特定のエラーは役に立ちませんが、データベース ファイルがゼロから作成され、探しているテーブルが見つからない可能性があります。

于 2013-11-13T14:08:00.490 に答える