Извлекать данные из базы данных FireBase в Android, Java с помощью searchin с идентификатором

#java #android #firebase #android-studio #firebase-realtime-database

#java #Android #firebase #android-studio #firebase-realtime-database

Вопрос:

Я попытался реализовать код на Java для извлечения данных из базы данных (firebase) путем поиска по идентификатору и отображения его в форме.

Это представление моего проекта Android Здесь я уже сохранил некоторые данные, и теперь, когда я ввожу идентификатор, ему необходимо отобразить данные идентификатора в этой же форме.

 btnShow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            searchID = txtid.getText().toString().trim();
            DatabaseReference readRef = FirebaseDatabase.getInstance().getReference();
            DatabaseReference dref = readRef.child("Student");
            Query query = dref.orderByChild("id").equalTo(searchID);
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if(dataSnapshot.hasChildren()){
                        txtID.setText((dataSnapshot.child("id").getValue().toString()));
                        txtName.setText((dataSnapshot.child("name").getValue().toString()));
                        txtAdd.setText((dataSnapshot.child("address").getValue().toString()));
                        txtConNo.setText((dataSnapshot.child("conNo").getValue().toString()));
                    }
                    else
                        Toast.makeText(getApplicationContext(),"No Source to Display",Toast.LENGTH_SHORT).show();

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    });
  

Это java-код, который я реализовал для этого. Но когда я запускаю программу и указываю правильный идентификатор в базе данных, он всегда отображается как «Нет источника для отображения» (в моей базе данных есть данные, и функция сохранения работает должным образом)

База данных

Я новичок в Android Studio и firebase. Пожалуйста, измените приведенный выше код и скажите мне, как я могу выполнять поиск по идентификатору.

Спасибо.

Комментарии:

1. добавьте скриншот вашей базы данных

2. Добавлена база данных, сэр

Ответ №1:

Попробуйте следующее:

 if(dataSnapshot.exists()){
    for(DataSnapshot ds : dataSnapshot.getChildren()){
       txtID.setText((ds.child("id").getValue().toString()));
       txtName.setText((ds.child("name").getValue().toString()));
       txtAdd.setText((ds.child("address").getValue().toString()));
       txtConNo.setText((ds.child("conNo").getValue().toString()));
    }
}
  

Ваша ссылка находится на узле, Student поэтому вам нужно выполнить цикл, а затем использовать ds для доступа к атрибутам. Кроме того, не забудьте проверить наличие ошибок внутри onCancelled :

 @Override
public void onCancelled(@NonNull DatabaseError databaseError) {
    Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
  

Комментарии:

1. Как мы можем реализовать код для обновления и удаления вышеупомянутого сценария. Обратитесь за помощью.

2. Вам нужно использовать updatechildren.. Пожалуйста, задайте другой вопрос с требуемыми подробностями