Sqlite3 Blob для UIImage - PullRequest
       4

Sqlite3 Blob для UIImage

1 голос
/ 04 июля 2011

Здравствуйте! На моем компьютере создана база данных Sqlite3, и я хочу прочитать эту базу данных на своем Iphone.Следующий код работает в симуляторе Iphone, но не работает в реальном устройстве, это, кажется, некоторая проблема, связанная с архитектурами устройств (MacBook против Iphone).Проблема в том, что когда я читаю данные и пытаюсь преобразовать их в UIImage, данные не кажутся правильными, потому что в результате получается пустой UIImageView вместо представления Image.В симуляторе работает хорошо.

-(IBAction) findPhoto{

databaseName = @"memoryDB.sqlite";

    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    databasePath = [documentsDir stringByAppendingPathComponent:databaseName];



    int res = 0;

    res = sqlite3_open_v2([databasePath UTF8String], &database, SQLITE_OPEN_READONLY, nil);

    if(res == SQLITE_OK) {
        // Setup the SQL Statement and compile it for faster access

        NSString *querySQL = [NSString stringWithString:@"SELECT * FROM Fotos"];

        const char *sqlStatement = [querySQL UTF8String];

        sqlite3_stmt *compiledStatement;
        if((res = sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)) == SQLITE_OK) {
            // Loop through the results and add them to the feeds array
            while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
                // Read the data from the result row


                UIImage *image;

                NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 1) length:sqlite3_column_bytes(compiledStatement, 1)];

                if(data == nil)
                    NSLog(@"No image found.");
                else
                    image = [[UIImage alloc] initWithData:data];     
                //

                NSLog(@"width: %f,height: %f",image.size.width, image.size.height);

                UIImageView *imgView = [[UIImageView alloc] initWithImage:image];
                [self.view addSubview:imgView];

            }
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);
        sqlite3_close(database); 

    }
}

Я включил базу данных (БД) в проект, и БД была создана в моем MacBook.Это проблема?Можно ли конвертировать данные в правильный формат?

1 Ответ

0 голосов
/ 04 июля 2011

Это неправильный способ.чтобы сохранить изображение в базе данных.

вы должны сохранить его в NSDocumentDirectory.

и просто сохранить имя изображения в таблице БД.

, поэтому легко получить имя имени изображения из таблицы и получить изображение из каталога документов.и это очень быстро, чем получить изображение из базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...