Как отправить URL-адрес загрузки изображения из FireBase Storage в базу данных SQLServer? - PullRequest
0 голосов
/ 18 апреля 2019

У меня проблема с отправкой URL-адреса загрузки в базу данных сервера sql, хотя я получаю URL-адрес и устанавливаю его в TextView, но он не отображается в базе данных.

Вот кодЯ пытался и пробовал много способов, но все еще не работает

public void Upload() {
    if (filePath != null) {

        final ProgressDialog progressDialog = new ProgressDialog(getActivity());
        progressDialog.setTitle("Uploading");
        progressDialog.show();

        final StorageReference riversRef = FirebaseStorage.getInstance().getReference().child("BrandImages/" + brandname.getText().toString() + ".jpg");

        riversRef.putFile(filePath)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                progressDialog.dismiss();

                Task<Uri> task = taskSnapshot.getMetadata().getReference().getDownloadUrl();
                task.addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        String generatedFilePath = uri.toString();
                        imgpath.setText(generatedFilePath);
                    }
                });


                ConnectDatabase db = new ConnectDatabase();
                Connection con = db.ConnectDB();
                if (con == null)
                    Toast.makeText(getActivity(), "Please check your internet connection!", Toast.LENGTH_LONG).show();

                else {
                    try {
                        Statement sm = con.createStatement();
                        int x = sm.executeUpdate("insert into CarBrand values('" + brandname.getText() + "','" + imgpath.getText() + "')");

                        if (x == 0)
                            Toast.makeText(getActivity(), "an error occurred, please try again in a few moments.", Toast.LENGTH_LONG).show();
                        else {
                            Toast.makeText(getActivity(), "Brand has been added.", Toast.LENGTH_LONG).show();
                            brandname.getText().clear();
                             }
                    } catch (SQLException e) {
                        if (e.getErrorCode() == 2627)
                            Toast.makeText(getActivity(), "Brand already exists!", Toast.LENGTH_LONG).show();
                        else
                            Toast.makeText(getActivity(), "an error occurred", Toast.LENGTH_LONG).show();
                    }

                }


            }
        });

Теперь я получаю URL-адрес и устанавливаю (imgpath), который является TextView, но проблема заключается в том, когда он вставляется в базу данных, которую он показываетзначение по умолчанию для TextView, а не URL для загрузки

1 Ответ

0 голосов
/ 18 апреля 2019

Попробуйте поместить метод для вас sql db внутри слушателя (я не знаю контекст вашего кода, но это, вероятно, не работает, потому что метод firebase является асинхронным).

Теперь вы уверены, что ваш метод будет выполнен сразу после получения вашего URL.

Как это:

Task<Uri> task = taskSnapshot.getMetadata().getReference().getDownloadUrl();
            task.addOnSuccessListener(new OnSuccessListener<Uri>() {
                @Override
                public void onSuccess(Uri uri) {
                    String generatedFilePath = uri.toString();
                    imgpath.setText(generatedFilePath);





            ConnectDatabase db = new ConnectDatabase();
            Connection con = db.ConnectDB();
            if (con == null)
                Toast.makeText(getActivity(), "Please check your internet connection!", Toast.LENGTH_LONG).show();

            else {
                try {
                    Statement sm = con.createStatement();
                    int x = sm.executeUpdate("insert into CarBrand values('" + brandname.getText() + "','" + imgpath.getText() + "')");

                    if (x == 0)
                        Toast.makeText(getActivity(), "an error occurred, please try again in a few moments.", Toast.LENGTH_LONG).show();
                    else {
                        Toast.makeText(getActivity(), "Brand has been added.", Toast.LENGTH_LONG).show();
                        brandname.getText().clear();
                         }
                } catch (SQLException e) {
                    if (e.getErrorCode() == 2627)
                        Toast.makeText(getActivity(), "Brand already exists!", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(getActivity(), "an error occurred", Toast.LENGTH_LONG).show();
                }

            }
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...