sqlite3 insert and read BLOB data in database

后端 未结 5 552
刺人心
刺人心 2020-12-03 09:05

I need to read and write BLOB data to a database. Here is my structure table

    #define CREATE_TABLE_USERS_SQL \"CREATE TABLE IF NOT EXISTS %@ ( \\
UserID I         


        
5条回答
  •  臣服心动
    2020-12-03 09:46

    //-----insert IMAGE

      - (void)setImage:(UIImage *)theImage
     {
    
      if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
      {    
        NSString *insertProgrammeSql = @"INSERT INTO imageTable (imageName) VALUES (?)";
    
    sqlite3_stmt *statement;
    
       if (sqlite3_prepare_v2(myDatabase, [insertProgrammeSql cStringUsingEncoding:NSUTF8StringEncoding], -1, &statement, NULL) == SQLITE_OK) {
    
        NSData *imageData = UIImagePNGRepresentation(theImage);
    
             sqlite3_bind_blob(statement, 1, [imageData bytes], [imageData length], SQLITE_TRANSIENT);
    
        sqlite3_step(statement);
    }
      sqlite3_close(myDatabase);
    //  return YES;    
    }   
    
    
      }
    

    //--------get image

       -(UIImage *)getImage
    
        {
    
        UIImage *image = nil;
    
    
    if(sqlite3_open([databasePath UTF8String],&myDatabase)==SQLITE_OK)
    {   
    
    NSString *selectSql = @"SELECT image FROM imageTable";
    
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(myDatabase, [selectSql UTF8String], -1, &statement, NULL) == SQLITE_OK)
    {
        int length = sqlite3_column_bytes(statement, 0);
        NSData *imageData = [NSData dataWithBytes:sqlite3_column_blob(statement, 0 ) length:length];
    
        image = [UIImage imageWithData:imageData];
    
    
    
      sqlite3_finalize(statement);
    
      }
         sqlite3_close(myDatabase);
      }
     return image;
     }
    

提交回复
热议问题