проблема при чтении изображения из базы данных в iphone - PullRequest
1 голос
/ 05 марта 2011

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

-(void)insertimages: (NSData *)image
{
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
    {
        NSUInteger len = [image length];
        NSLog(@"data size is %d", len);

        sqlStatement="insert into messages values(10,?)";
        if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK)
        {
            //sqlite3_bind_int(compiledStatement, 1, -1);
            //sqlite3_bind_blob(updateStmt, 3, [imgData bytes], [imgData length], NULL);
            sqlite3_bind_blob(compiledStatement, 1, [image bytes], [image length], SQLITE_TRANSIENT);
            //sqlite3_bind_text(compiledStatement, 1, [SMSBody UTF8String],-1,SQLITE_STATIC);
            if(sqlite3_step(compiledStatement) == SQLITE_DONE) 
            {
                sqlite3_finalize(compiledStatement);                
            }

        }       
        sqlite3_close(database);    
    }   
}

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

против любого, пожалуйста, помогите мне, как это сделать.

Ответы [ 2 ]

1 голос
/ 05 марта 2011

Используйте следующий метод для чтения данных изображения из базы данных и сохранения изображений в массиве или в словаре


-(void) readImageDataFromDatabase {
    // Setup the database object
    sqlite3 *database;

    // Init the img Array
    imageArray = [[NSMutableArray alloc] init];

    // Open the database from the users filessytem
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
        // Setup the SQL Statement and compile it for faster access
        const char *sqlStatement = "select * from messages";
        sqlite3_stmt *compiledStatement;
        if(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
                NSURL *url = [NSURL URLWithString:[NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)]];
];
                NSData *imgData = [NSData dataWithContentsOfURL: url];

                // Create a new image object with the data from the database
                iconImage.image=[UIImage imageWithData:imgData];

                // Add the img object to the img Array
                [imageArray addObject:iconImage];
            }
        }
        // Release the compiled statement from memory
        sqlite3_finalize(compiledStatement);

    }
    sqlite3_close(database);

}

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

Я пытался сделать это год назад, я написал код для сохранения изображений в базу данных sqlite3, используя osx sdk (из которых я мог писать и читать, я даже мог хранить изображения в базе данных с помощью ruby ​​и читать их с Macosx SDK). Но когда я перенес этот точный код в приложение для iOS, он вытащил плохие данные. Если вы решите это, я хотел бы знать ответ.

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