如何在SQL数据库中存储图像?

时间:2012-06-04 09:41:27

标签: android sql image blob

在我的应用中,我在图片视图中设置了图库中的图像。现在我想将该图像存储在我的SQL数据库中。

  1. 我在SQL数据库中需要更改什么? (BLOB ??)
  2. 从图像视图中检索图像并将其存储在SQL数据库中的最佳方法是什么?
  3. 这是我的SQL数据库:

    private static final String DATABASE_CREATE =
            "create table " + DATABASE_TABLE + " ("
                    + KEY_ROWID + " integer primary key autoincrement, "
                    + KEY_TITLE + " text not null, " 
                    + KEY_BODY + " text not null, " 
                    + KEY_DATE_TIME + " text not null);"; 
    

    这里我在图库中获取图像的路径,然后在图像视图中设置图像

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == PICK_FROM_FILE) {
                Uri selectedImageUri = data.getData();
                selectedImagePath = getPath(selectedImageUri);
    
                Log.v("IMAGE PATH====>>>> ",selectedImagePath);
    
             // Decode, scale and set the image.
                Bitmap myBitmap = BitmapFactory.decodeFile(selectedImagePath);
                Bitmap scaledBitmap = Bitmap.createScaledBitmap(myBitmap, NEW_WIDTH, NEW_HEIGHT, true);
                myBitmap.recycle();
                myBitmap = null;
    
                mImageView.setImageBitmap(scaledBitmap);
    
            }
        }
    }
    

3 个答案:

答案 0 :(得分:3)

首先创建这样的表 db.execSQL(“如果不存在则创建表tablename(....,图像BLOB,.....);”);

然后像这样做你的java代码,

  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  Bitmap bit = BitmapFactory.decodeFile("your image path here");
  bit.compress(CompressFormat.PNG, 0, outputStream);

  SQLiteDatabase db = dbh.getWritableDatabase();
  ContentValues cv = new ContentValues();
  ..
 cv.put("images", outputStream.toByteArray());
 ..
 ..
db.insert("tablename", null, cv);
db.close();

这会将您的图像存储到db和

byte []temp = c.getBlob(3);
Bitmap image = BitmapFactory.decodeByteArray(temp, 0, temp.length);
BitmapDrawable dd = new BitmapDrawable(image.getImage());
imgView.setBackgroundDrawable(dd);

这将从db ..

中检索图像

答案 1 :(得分:2)

或者,您将图像保存在手机存储器(SD卡上)或应用程序缓存等中。然后存储路径以在SQL数据库中检索图像文件。

答案 2 :(得分:2)

不是一个好主意..你应该将图像保存在磁盘上以减少sql操作并提高应用程序性能。在DB中保存图像会使数据库在每种意义上都很重。只需将图像存储在所需位置的磁盘上并将路径以及图像名称保存为数据库表中的字符串。