Проблема при получении BLOB-изображения из базы данных Sqlite в приложении iPad - PullRequest
0 голосов
/ 17 апреля 2011

Я пишу фрагмент кода для хранения и извлечения фотографий в виде BLOB в мою базу данных sqlite.

Фотографии успешно добавляются в базу данных, но когда я получаю изображение, оно не отображается вUIImageView.

Кто-нибудь может увидеть, что здесь не так?

вот код для хранения изображения:

 if (sqlite3_open([[self filePath] UTF8String], &db) == SQLITE_OK) {    

     NSData *imgData = UIImagePNGRepresentation(TempImg); //TempImg is an UIImage instance
     char *err;
     NSString *sql = [NSString stringWithFormat:@"INSERT INTO 'Picture' ('Pic', 'PID') VALUES ('%@', '%@')",imgData, PID];
     sqlite3_stmt *statement;

    sqlite3_bind_blob(sql, 0, [imgData bytes], [imgData length], nil);  

     if (sqlite3_prepare_v2( db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {

         if (sqlite3_exec(db, [sql UTF8String], NULL, NULL, &err)!= SQLITE_OK )
         {sqlite3_close(db);}

         else{
             UIAlertView *alert = [[UIAlertView alloc] 
                                   initWithTitle:@"Success" message:@"The Photo have been successfully added." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
             [alert show];
             [alert release];

             sqlite3_close(db);
         }
     }
 }

, а вот код извлечения:

    if (sqlite3_open([[self filePath] UTF8String], &db) == SQLITE_OK) {         
        NSString *sql = [NSString stringWithFormat:@"SELECT * FROM Picture Where PicID = '14'"];
        sqlite3_stmt *statement;

        if (sqlite3_prepare_v2( db, [sql UTF8String], -1, &statement, nil) == SQLITE_OK) {
            while (sqlite3_step(statement) == SQLITE_ROW)
            {
                char *field1 = (char *) sqlite3_column_text(statement, 0);//the name of the picture
                NSString *field1Str = [[NSString alloc] initWithUTF8String: field1];
                field.text= field1Str;

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

if (data==nil) {
    UIAlertView *alert = [[UIAlertView alloc] 
                          initWithTitle:@"NULL" message:@"" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
                UIImage *newImage = [UIImage imageWithData:data]; 
                [Img setImage:newImage];//Img is a UIImageView instance             
            }
            sqlite3_close(db);
                 }
}

проблема в том, что Img UIImageView ничего не показывает.

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