0

私がやろうとしているのは、自分の sqlite ファイルからデータを読み取ることです。

私のアプリでは、sqliteファイルを作成してから読み取ることができますが、「asg.sqlite」ファイルを追加すると、アプリで最初にsqliteファイルを作成してから読み取ることができる場合にのみ、ファイルから読み取ることができません。私の頭を悩ませてくださいここに私のコードがあります

-(void) createTable: (NSString *) tableName
         withField1:(NSString *) field1
         withField2:(NSString *) field2
         withField3:(NSString *) field3
         withField4:(NSString *) field4;
{
    char *err;
    NSString *sql = [NSString stringWithFormat:
                     @"CREATE TABLE IF NOT EXISTS '%@' ('%@' "" TEXT PRIMARY KEY, '%@' INTEGER, '%@' INTEGER, '%@' TEXT);", tableName, field1, field2, field3, field4 ];

    if(sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)
       != SQLITE_OK) {
        sqlite3_close(db);
        NSAssert(0, @"Could not create table");
    } else {
        NSLog(@"table created");
    }
}
//file path to database
-(NSString *) filePath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains
    (NSDocumentDirectory, NSUserDomainMask, YES);
    return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"asg.sqlite"
            ];
}

//open the database
-(void)openDB {
    if (sqlite3_open([[self filePath] UTF8String], &db) != SQLITE_OK) {
        sqlite3_close(db);
        NSAssert(0, @"Database failed to open");
    }else{
        NSLog(@"database opened");
    }
}
4

1 に答える 1

0

バンドルに db ファイルを追加すると、Documents ディレクトリには含まれないことに注意してください。アプリのメインバンドルにあります。使用する

[NSBundle mainBundle] pathForResource:.... 

この質問はあなたを助けることができます

于 2013-06-09T22:41:23.783 に答える