2009-04-10 7 views
2

sqlite3に画像を挿入したいのですが、「create table table1(photo blob、name varchar(10));」を使用してテーブルを作成しました。今私はそれに画像を挿入したいので、それに画像を挿入する構文は何ですか?別のテーブルでは、私は2番目のテーブルのために私のテーブルを作成し、テーブルの構文を挿入する画像の場所を格納したいと思います。あなたは私を助けることができますか? そして、コマンドラインから正しく挿入されているかどうかをどうやって確認できますか?iPhone上でSQLiteに画像を挿入するにはどうすればよいですか?

答えて

1

あなたは単にiphoneファイルシステムに画像を保存して、その位置情報をsqliteに保存しないでください。

+0

ので、シンプルに行うが、その後どのように私はそれらの両方を統合することができます? –

1

あなたはイメージのため、生のNSDataを取得して、それを救うことができる...

NSData *imageData = UIImagePNGRepresentation(image); 
+0

okです。gdbコンパイラでは、4行を繰り返し表示しますが、実際には1行しか挿入しません。あなたは私を助けることができますか? –

+0

NSDataはデータのマルチパートセットとしてgdbで表されますが、NSStringオブジェクトに変換できます。 – Jason

3

あなたは、コードの行を以下でsqlite3の中に画像を挿入することができます。

1))が最初にSQLiteのinsert文に

static sqlite3_stmt *insert_statement; //Declare Insert statement  
    - (void)InsertIntoDatabase{ // start insert method 
     const char *sql = "INSERT INTO <yourtable> (<column1>, <BLOBColumnName>) VALUES (? , ?)" ; 
      if(sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) != SQLITE_OK) 
       NSAssert1(0, @"Error while creating insert statement. '%s'", sqlite3_errmsg(database));} 

//For simple integer column** 
    sqlite3_bind_int(insert_statement, 1, <value column 1>); 

//For image column** 
    NSString *webUrl = @"http://yourwebsite/youImage.jpg";   
    UIImage *myImage = [self GetRawImage:webUrl]; //Get image from method below 
        if(myImage != nil){ 
        NSData *imgData = UIImagePNGRepresentation(myImage); 
        sqlite3_bind_blob(insert_statement, 2, [imgData bytes], [imgData length], NULL); 
        } 
        else { 
         sqlite3_bind_blob(insert_statement, 2, nil, -1, NULL); 
        } 
    } // end of insert method 

2を準備= = RAW画像ファイルを取得するためのメソッド。

- (UIImage *)GetRawImage:(NSString *)imageUrlPath 
    { 
    NSURL *imageURL = [NSURL URLWithString:imageUrlPath]; 
    NSData *data = [NSData dataWithContentsOfURL:imageURL]; 
    UIImage *image = [[UIImage alloc] initWithData:data]; 
    return image; 
    } 

!ITSはOK

関連する問題