2014-03-27 80 views
1

我有這個課,我在sqlite中創建我的表,everthing工作得很好,在我的項目中,您可以插入,刪除和更新學生和教師的信息,但現在我想保存一個圖像,這意味着除了保存學生或老師的信息以外,我還想保存一張圖片,請有人幫助我嗎?你不知道如何做到這一點。在sqlite Android中保存圖像?

package MyClasses;

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 

public class sqliteClass extends SQLiteOpenHelper{ 

String sqlAlumno = "CREATE TABLE Alumno(id integer primary key,nombre varchar(30),apellidos varchar(25),especialidad varchar(25),email varchar(25))"; 

String sqlProfe = "CREATE TABLE Profe(id integer primary key,nombre varchar(30),apellidos varchar(25),especialidad varchar(25),email varchar(25))"; 

    public sqliteClass(Context context, String name, CursorFactory factory, 
      int version) { 
     super(context, name, factory, version); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(sqlAlumno); 
     db.execSQL(sqlProfe); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 


    } 

} 

回答

1

總體而言:

blob類型添加一列,說image blob,爲您創建表查詢

插入圖像

ContentValues cv = new ContentValues(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
yourBitmap.getBitmap().compress(Bitmap.CompressFormat.PNG, 100, out); 
cv.put(KEY_IMG, out.toByteArray()); 

還原圖像
使用Cursor#getBlob()方法獲取圖像並存儲我噸一byte[]陣列

byte[] blob = cursor.getBlob(cur.getColumnIndex("image")); 

轉換字節[]爲位圖:

Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length); 

但是我想在數據庫中大級別存儲的圖像是不值錢的,因爲SQLite的空間有限,所以存儲圖像路徑有價值。

0

它通常被認爲是一種糟糕的形式來保存像數據庫中的圖像的二進制數據。在大多數情況下,出於某些技術原因,它實際上最終會損壞數據庫的性能。相反,將要緩存的圖像保存到SD卡,並將這些圖像的文件路徑存儲在數據庫中。

總是養成保存圖像路徑到數據庫的習慣。對於列表視圖,請確保只使用這些圖像的縮略圖。這將幫助您快速加載列表中的這些圖像。

long selectedImageUri = ContentUris.parseId(Uri.parse(anniEntry.getUri())); Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail( mContext.getContentResolver(), selectedImageUri,MediaStore.Images.Thumbnails.MICRO_KIND, null);

這裏anniEntry.getUri()是圖像uri.Now,把它放在第二code.U可根據需要

得到微或迷你縮略圖