当image为null时,数据不会插入数据库

And*_*die 0 java mysql android imageview android-fragments

我想将数据存储到数据库中,并希望上传可选的图像.

这意味着如果我在不添加图像的情况下插入记录,那么它将存储在没有图像名称的数据库中.

现在,当我填充数据并插入图像然后它存储在数据库中,如果我没有选择任何图像,我只添加数据,然后在数据库中没有插入数据,并在每个字段显示我的空白值

我尝试了很多,但没有得到所需的输出.

我的代码main.java

    buy_image1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                selectImage();
                edit.putInt("ImageID", 1);
                edit.commit();


            }
        });

        public void selectImage()
    {
        i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, RESULT_LOAD_IMAGE);
        /*i.putExtra("crop", "true");
        i.putExtra("outputX", 512);
        i.putExtra("outputY", 512);
        i.putExtra("aspectX", 1);
        i.putExtra("aspectY", 1);
        i.putExtra("scale", true);
    */
    }
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == getActivity().RESULT_OK && null != data) {
            final int IMAGE_MAX_SIZE = 1200000; // 1.2MP

            Uri selectedImage = data.getData();
            int imgid = 0;
            String[] filePathColumn = {MediaStore.MediaColumns.DATA};

           Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            picturePath = cursor.getString(columnIndex);
            cursor.close();
            Log.d("Value", picturePath);
            fileName = new File(picturePath).getName();
            // imgname.setText(fileName);

            String fileNameSegments[] = picturePath.split("/");
            fileName = fileNameSegments[fileNameSegments.length - 1];

            // MyParams.put("filename", fileName);
            Bitmap yourSelectedImage = BitmapFactory.decodeFile(picturePath);

            sp = getActivity().getSharedPreferences("Image ID", Context.MODE_PRIVATE);
            imgid = sp.getInt("ImageID", 0);
            Log.d("IMGID", Integer.toString(imgid));


            BitmapFactory.Options options =null;
            options = new BitmapFactory.Options();
            options.inSampleSize = 5;
            bitmap = BitmapFactory.decodeFile(picturePath, options);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 85, stream);

            byte[] byte_arr = stream.toByteArray();
            // Encode Image to String
            encodedString = Base64.encodeToString(byte_arr, 0);


            if(imgid == 1) {
                buy_image1.setImageBitmap(yourSelectedImage);
                img1 = fileName;
                encodedStringIMG1 = encodedString;
            }else if(imgid == 2){

                buy_image2.setImageBitmap(yourSelectedImage);
                img2 = fileName;
                encodedStringIMG2 = encodedString;

            }
        else{
                Log.d("IMGID","IMAGE ID IS 0");
            }
    }
    private void InsertWodinformation() {

        service(strwodname,strbranch,strcontactperson,strcontact,strwhatsapp,stremail,
                strspinnercity,straddress,opendate1,birthdate,ani,strpancard,strtinnumber,strbankname,strbankholdername,strbankac,
                strbankcity, strifsccode,strsecuritycheque,strrefrence1,strrefrence2,strremarks,img1,encodedStringIMG1,img2,encodedStringIMG2);
    }
private void service(
        String strwodname,String strbranch,
        String strcontactperson, String strcontact,
        String strwhatsapp, String stremail, String strspinnercity,
        String straddress, String opendate1, String birthdate, String ani,
        String strpancard, String strtinnumber, String strbankname, String strbankholdername
        ,String strbankac,String strbankcity, String strifsccode,String strsecuritycheque,String strrefrence1,
        String strrefrence2,String strremarks,String i1,String encode1,String i2,String encode2
  ) {

        class AddVisitclass extends AsyncTask<String, Void, String> {
            ProgressDialog loading;
            RegisterUserClass ruc = new RegisterUserClass();

            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }
            @Override
            protected String doInBackground(String... params) {


                HashMap<String, String> param = new HashMap<String, String>();


                /*param.put("firm", params[1]);
                param.put("oname", params[2]);
                param.put("pname1", params[3]);
                param.put("pname2", params[4]);
                */
                param.put("wname", params[0]);
                param.put("branch", params[1]);
                param.put("cname", params[2]);
                param.put("contact", params[3]);
                param.put("whatsapp", params[4]);
                param.put("email", params[5]);

                param.put("city", params[6]);
                param.put("address", params[7]);
                param.put("odate", params[8]);
                param.put("bdate", params[9]);
                param.put("adate", params[10]);
                param.put("pancard", params[11]);
                param.put("tinno", params[12]);
                param.put("bnm", params[13]);
                param.put("bank_ac_holder", params[14]);
                param.put("bank_ac_no", params[15]);
                param.put("bcity", params[16]);
                param.put("ifsc_code", params[17]);
                param.put("cheque", params[18]);
                param.put("ref1", params[19]);
                param.put("ref2", params[20]);
                param.put("remarks", params[21]);

                param.put("pan", params[22]);
                param.put("epan", params[23]);
                param.put("aadhar", params[24]);
                param.put("eaadhar", params[25]);
/*


                param.put("light", params[26]);
                param.put("elight", params[27]);

                param.put("vat", params[28]);
                param.put("evat", params[29]);

                param.put("vcard", params[30]);
                param.put("evcard", params[31]);

                param.put("shop", params[32]);
                param.put("eshop", params[33]);
*/



                param.put("username",uid);
                String result = ruc.sendPostRequest(url_addwod, param);
                Log.d("Result", result);
                Log.d("Data", param.toString());
                return result;
            }
            //@Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);
                //loading.dismiss();


                Toast.makeText(getActivity(), "W.O.D. added successfully...!!!", Toast.LENGTH_LONG).show();
                /* FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
                TabFragment mFrag = new TabFragment();
                t.replace(com.Weal.sachin.omcom.R.id.framelayout, mFrag);
                t.commit();
                */
            }
        }
        AddVisitclass regi = new AddVisitclass();
        regi.execute(strwodname,strbranch,strcontactperson,strcontact,strwhatsapp,stremail,
                strspinnercity,straddress,opendate1,birthdate,ani,strpancard,strtinnumber,strbankname,strbankholdername,strbankac,
                strbankcity, strifsccode,strsecuritycheque,strrefrence1,strrefrence2,strremarks,i1,encode1,i2,encode2);
    }
Run Code Online (Sandbox Code Playgroud)

还有一件事,当图像上传到服务器时,它产生的尺寸较小,但我想要它的默认大小.

mam*_*man 5

存储图像/文件数据的最佳方法是将图像保存到设备存储资源(例如内部存储器或外部存储器),然后将图像URL/URI保存在数据库中(而不是在数据库中使用blob字段),要显示它,您只需检索文件URL并将其显示在设备上即可.

我希望这能为您提供更好的解决方案.