加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

select – sqlite3在数据库中插入并读取BLOB数据

发布时间:2020-12-12 23:43:08 所属栏目:百科 来源:网络整理
导读:我需要读取和写入BLOB数据到数据库.这是我的结构表 #define CREATE_TABLE_USERS_SQL "CREATE TABLE IF NOT EXISTS %@ ( UserID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,Name VARCHAR(50),Image BLOB);" 如何将其插入数据库,然后从中检索? 环境:iPh
我需要读取和写入BLOB数据到数据库.这是我的结构表
#define CREATE_TABLE_USERS_SQL "CREATE TABLE IF NOT EXISTS %@ ( 
UserID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
Name VARCHAR(50),
Image BLOB);"

如何将其插入数据库,然后从中检索?

环境:iPhone SDK 4.1 SQLite3数据库.

此代码失败:

NSData * buf2 = [[NSData alloc] init];
        sqlite3_column_blob(statement,5);
        buf2 = sqlite3_column_bytes(statement,5);
        user.image = [UIImage imageWithData: buf2];
Thanx所有!!随着你的帮助我解决了问题,并希望像我一样分享未来初学者的成绩.)
-(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);

    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],&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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读