有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将图像上载到SQLite数据库?

我试图创建一个应用程序,用户上传一张图片,并将其保存在SQLite数据库中。到目前为止,我已经成功地在遵循教程的同时将图像上载到应用程序,但是我不确定如何将其保存在SQLite中,以便在活动关闭并再次打开时,图像仍保留在那里

我的代码:

   public class Getimg2 extends Activity implements View.OnClickListener{



    private static final int RESULT_LOAD_IMAGE =1;
    ImageView ImageUp;
    Button   BtnUp;
    Button Confirm;
    SQLiteDatabase db;

     @Override
      protected void onCreate(Bundle savedInstanceState) {                             
        super.onCreate(savedInstanceState);
        setContentView(R.layout.diary_edit);


       ImageUp = (ImageView) findViewById (R.id.imageUp);
    BtnUp = (Button) findViewById (R.id.btnUp);
    Confirm =(Button) findViewById (R.id.confirm)   ;

        ImageUp.setOnClickListener(this);   
        BtnUp.setOnClickListener(this); 
        Confirm.setOnClickListener(this);
     }

    @Override
            public void onClick(View v){           

        switch(v.getId()) {

        case R.id.imageUp:                     

                Intent galleryIntent = new Intent (Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(galleryIntent,RESULT_LOAD_IMAGE);

            break;

            case R.id.btnUp:

                Bitmap image =((BitmapDrawable)ImageUp.getDrawable()).getBitmap();  

                break;

            case R.id.confirm:

                //save image to sql?

                Cursor c =dba.rawQuery("select  *  from tb", null);
    if (c.moveToNext())

                break;
            }


            }
   @Override
            protected void onActivityResult(int  requestCode , int resultCode, Intent data){
                super.onActivityResult(requestCode, resultCode, data);
                if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data !=null){
                    Uri selectedImage =data.getData();
                    ImageUp.setImageURI(selectedImage);

                }

          }

           private class UploadImage extends AsyncTask<Void,Void ,Void >{     

                Bitmap image;
                String name;


                public UploadImage(Bitmap image,String name){                   

                    this.image = image;
                    this.name = name;

                }

            @Override
                protected Void doInBackground(Void... params) {               
                    // TODO Auto-generated method stub

                    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                    image.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
                    String encodedImage = Base64.encodeToString(byteArrayOutputStream.toByteArray(),Base64.DEFAULT);
  }}}

共 (1) 个答案

  1. # 1 楼答案

    在数据库中存储如此大的项目不是正确的方法。将文件存储在应用程序的私有文件系统中,然后将文件路径存储在数据库中