public Drawable icon; \\ Some value in this field
我正在SQLite Manager中创建数据库。我想存储icon到数据库中。正确显示了另一个字段,但是当我icon使用数据类型的字段时BLOB,它不会显示。
icon
BLOB
public void prettyPrint() { public String appname = "asd"; public String pname = "asd"; public String versionName = "asd"; public int versionCode = 0; public Drawable icon="android.im...."; Insall_app_db i1 = new Insall_app_db(); i1.createDatabse("appInfo3", getBaseContext()); i1.createTable("off_appinfo4", getBaseContext()); i1.insertDataUser("off_appinfo4", appid ,appname,pname, versionName, versionCode, icon, x); } package com.AppInfo; import java.sql.Blob; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import android.R.drawable; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.drawable.Drawable; public class Insall_app_db { SQLiteDatabase sampleDB = null; String PhoneNumber; String UserId; Cursor c; ArrayList ar=new ArrayList(); public void createDatabse(String DbName,Context context) { sampleDB = context.openOrCreateDatabase(DbName, context.MODE_WORLD_READABLE,null); } public void createTable(String Tablename,Context context) { sampleDB.execSQL("CREATE TABLE IF NOT EXISTS " + Tablename + "(app_id INT,app_name VARCHAR(255),pname VARCHAR(255),version_name VARCHAR(25),versionCode INT,icon BLOB,date DATE);"); } public void DeleteTable(String Tablename,Context context) { sampleDB.execSQL("DROP TABLE off_appinfo4"); } public void insertDataUser(String tableName,int app_id,String app_name,String pname,String version_name,int versionCode,String d,long date1) { sampleDB.execSQL("INSERT INTO " + tableName + " Values ("+app_id+",'"+app_name+"','"+pname+"','"+version_name+"','"+versionCode+"','"+d+"',"+date1+");"); } public String GetUserData(Context context,String tablename) { c = sampleDB.rawQuery("SELECT User_Id FROM " + tablename + "", null); if(c!=null) { if(c.moveToFirst()) { do { UserId=c.getString(c.getColumnIndex("User_Id")); }while(c.moveToNext()); } } return UserId; } public void close() { sampleDB.close(); } }
您可以将图像转换为字节数组,并将该字节数组存储在数据库中的blob中。您可以将图像作为字节数组从数据库中检索回来。
ImageView iv = (ImageView) findViewById(R.id.splashImageView); Drawable d = iv.getBackground(); BitmapDrawable bitDw = ((BitmapDrawable) d); Bitmap bitmap = bitDw.getBitmap(); System.out.println(".....d....."+d); System.out.println("...bitDw...."+bitDw); System.out.println("....bitmap...."+bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] imageInByte = stream.toByteArray();
ContentValues cv = new ContentValues(); cv.put(CHUNK, buffer); //CHUNK blob type field of your table long rawId = database.insert(TABLE, null, cv); //TABLE table name
public static Bitmap convertByteArrayToBitmap( byte[] byteArrayToBeCOnvertedIntoBitMap) { bitMapImage = BitmapFactory.decodeByteArray( byteArrayToBeCOnvertedIntoBitMap, 0, byteArrayToBeCOnvertedIntoBitMap.length); return bitMapImage; }