2015-03-02 3 views
0

Я пытаюсь отобразить изображение из моей базы данных sqlite (как blob), он знает, что файл изображения находится там, отображая длину изображения и NSLog: «Image FOUND», но он не загружает изображение в изображение. Я пробовал эти много примеров из stackoverflow как this one и еще что-то еще, но все равно никаких проблем. Спасибо заранее, ребята. Вот то, что я до сих пор:Невозможно отобразить изображение из базы данных sqlite (blob) в iphone

sqlite3_stmt *statement1; 

NSString *querySQL1 = [NSString stringWithFormat:@"SELECT picture FROM table1 WHERE var = %f", variable]; 

const char *query_statement1 = [querySQL1 UTF8String]; 

if(sqlite3_prepare_v2(_DB, query_statement1, -1, &statement1, nil) == SQLITE_OK) 
{ 

    if (sqlite3_step(statement1) == SQLITE_ROW) 
    { 

    int length = sqlite3_column_bytes(statement1, 0); 

    NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(statement1, 0) length:length]; 

     UIImage *image = [UIImage imageWithData:data]; 

     NSLog(@"Length : %d", [data length]); 

     if(data == nil) 
      { 
       NSLog(@"No image found."); 
      } 

     else 
      { 
       NSLog(@"image FOUND ."); 
       myImageView.image = image;  
      } 
    } 

} 
+1

только потому, что данные = ноль не означает, что она содержит действительные данные изображения (т.е. PNG или JPG-изображение), которые будут обрабатывать [UIImage imageWithData]. Проверьте, есть ли (image == nil). Если вы видите нуль, а затем просмотрите содержимое своих данных. – CSmith

+0

просто попробовал это, и он вернулся: изображение НАЙДЕНО, но все еще ничего не отображает в изображении. – rick261

+1

Это может быть тонна вещей. Как говорит CSmith, может оказаться, что то, что вы извлекли из базы данных, было недействительным. В дополнение к тестированию, чтобы убедиться, что 'data' был' nil', проверьте, не было ли 'image'' nil'. Если это 'nil', то проблема заключается в данных в базе данных. Если это не 'nil', то это что-то другое (например,' myImageView' - 'nil' или его' frame' таков, что вы не можете его увидеть). – Rob

ответ

0
sqlite3 *dataname1; 

if (sqlite3_open([datapath UTF8String],&dataname1) == SQLITE_OK) { 

    const char *sqlStatement; 

    sqlStatement = "SELECT * FROM photography_tips"; 


    sqlite3_stmt *compiledStatement; 

    if(sqlite3_prepare_v2(dataname1, 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 
     NSData *data = [[NSData alloc] initWithBytes:sqlite3_column_blob(compiledStatement, 2) length:sqlite3_column_bytes(compiledStatement, 2)]; 
      [tipimage addObject:data]; 

     } 

    } 
NSLog(@"%@", tiptittle); 
} 

затем добавьте следующий код в методе cellforrowatindexpath

NSData *data= (NSData *) [tipimage objectAtIndex:indexPath.row]; 
cell.imageView.image=[UIImage imageWithData:data]; 
Смежные вопросы