2012-02-16 10 views
0

sqlLiteデータベーステーブルにイメージを格納するために使用するデータ型は何ですか?イメージをSQLiteに保存していますか?

次は私の試みです:

@Override 
public void onCreate(SQLiteDatabase db) { 
    // TODO Auto-generated method stub 
    db.execSQL("CREATE TABLE" + MP_TABLE_NAME + " (" + 
      BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
      " NAME TEXT, " + 
      " LAT REAL, "+ 
      " LNG REAL,"+ 
      ");" 
      ); 

} 
+5

イメージをSDカードに保存し、データベースにイメージへのパスを保存する必要があります。 – Luksprog

+0

は、画像を内部/外部メモリに保存するのは簡単ではなく、データベースへの参照をデータベースに保存するだけです。 – goodm

答えて

8

SQLite documentation on datatypesを参照してください。

おそらく、「バイナリBLOB」または「バイナリロングOBject」と呼ばれるBLOBタイプが必要です。 SQLiteデータベースに本当に大きなものを格納することは、必ずしも良い考えではないことに注意してください。通常、画像は管理できればファイルシステムに保存する方が良いでしょう。

5

イメージをSqliteに保存することは悪い考えです。そのパスをsqliteに保存する必要があります。画像は文字情報と比べてサイズが大きい。

sqliteから画像を保存したり取得したりするのは難しいでしょう。

このように、外部フォルダに画像を保存し、そのパスをsqliteデータベースに保存することをお勧めします。

+0

あなたは私にフォルダのイメージを保存する方法の例を教えてくださいできますか? –

+0

お願いします?コード例の場合は –

9

は、BLOB列を持つテーブルを作成する。これを試してみてください:

CREATE TABLE storedImages (_id INTEGER PRIMARY KEY, myImage BLOB); 

HTTPを使用して画像をダウンロードし、あなたのテーブルに格納:

にBLOBをロード
DefaultHttpClient mHttpClient = new DefaultHttpClient(); 
HttpGet mHttpGet = new HttpGet("your image url"); 
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet); 
if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { 
    HttpEntity entity = mHttpResponse.getEntity(); 
    if (entity != null) { 
     // insert to database 
     ContentValues values = new ContentValues(); 
     values.put(MyBaseColumn.MyTable.ImageField, EntityUtils.toByteArray(entity)); 
     getContentResolver().insert(MyBaseColumn.MyTable.CONTENT_URI, values); 
    } 
} 

イメージビュー:

+1

+1。 –

関連する問題