sqlite3 insert and read BLOB data in database

后端 未结 5 532
刺人心
刺人心 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:55

    Thanx all!! With yours help I'v solved problem and want to share results for future beginners like I am.)

    -(void) addToDB
    {
        NSLog(@"\nCreating db");
        NSString *str = @"CREATE TABLE IF NOT EXISTS Images (image1 BLOB);";
        int res = SQLITE_ERROR;
    
    
        res = sqlite3_open([@"aa.sql" UTF8String], &database);
        res = sqlite3_exec(database, [str UTF8String], NULL, NULL, NULL);
    
        sqlite3_stmt *updStmt =nil; 
    
        const char *sql = "INSERT INTO Images (image1) VALUES (?);";
        res = sqlite3_prepare_v2(database, sql, -1, &updStmt, NULL);
    
        if(res!= SQLITE_OK)
        {
            NSLog(@"Error while creating update statement:%s", sqlite3_errmsg(database));
        }
    
        UIImage *img = [UIImage imageNamed: @"flower.png"];
        NSData *imageData = [NSData dataWithData: UIImagePNGRepresentation(img)];
    
        res = sqlite3_bind_blob(updStmt, 1, [imageData bytes], [imageData length] , SQLITE_TRANSIENT);
    
        if((res = sqlite3_step(updStmt)) != SQLITE_DONE)
        {
            NSLog(@"Error while updating: %@", sqlite3_errmsg(database));
            sqlite3_reset(updStmt);
        } 
    
        res = sqlite3_reset(updStmt);
        res = sqlite3_close(database);
    }
    
    -(void) readFromDB
    {
        NSLog(@"\nReading from db");
    
        NSString *query = @"SELECT image1 from Images";
        int res = SQLITE_ERROR;
        int len = 0;
    
        res = sqlite3_open([@"aa.sql" UTF8String], &database);
    
        sqlite3_stmt *statement;
        res = sqlite3_prepare_v2 (database, [query UTF8String], -1, &statement, nil);
    
        if (res == SQLITE_OK)
        {
            if (sqlite3_step(statement) == SQLITE_ROW)
            {
                len = sqlite3_column_bytes(statement, 0);
                NSData *imgData = [[NSData alloc] initWithBytes: sqlite3_column_blob(statement, 0) length: len];           
    
    
                UIImage *img = [[UIImage alloc] initWithData:imgData];
    
                self.view1.image = img;
    
            }
        }
        sqlite3_finalize(statement);
    
        res = sqlite3_close(database);
    }
    

提交回复
热议问题