首先,我在很多地方搜索过,但我根本没有找到这个问题的答案,所以,我在这里问。但是,我想知道:如何转换这样的查询:*在Android的Firebase数据库中选择a,b,c FROM MyTable *?下面我想尽了办法如下:如何在Android中的Firebase数据库中使用多个字段执行SELECT?
public void testQueryMethod(final PhisicianHandler handler) {
final String databaseReference = "CadastroMedico";
database.getReference(databaseReference)
.child("mDoctorID")
.child("mNome")
.child("mEspecialidade")
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
ArrayList<String> dadosMedico = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
dadosMedico.add(snapshot.getValue().toString());
System.out.println(snapshot.getValue().toString());
}
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
我的整个模式
公共类FirebaseDatabaseModel {
//Creating the instance of the database
private FirebaseDatabase database = FirebaseDatabase.getInstance();
public ArrayList<String> dataRetriever(final ArrayList<String> dadosMedicosRecebidos, final BaseAdapter adapter) {
final String tableName = "Especialidade";
final String childToBeOrdered = "NomesEspecialidades";
database.getReference(tableName).orderByChild(childToBeOrdered)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
dadosMedicosRecebidos.add(snapshot.getValue().toString());
adapter.notifyDataSetChanged();
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return dadosMedicosRecebidos;
}
/**
* This method gets all the registries where specialty is equal to the selected item on the spinner
*/
public void queryMethod(String selectedItem, final PhisicianHandler handler) {
final String tableName = "CadastroMedico";
final String childToBeOrdered = "mEspecialidade";
database.getReference(tableName)
.orderByChild(childToBeOrdered)
.equalTo(selectedItem)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
ArrayList<String> dadosMedico = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
dadosMedico.add(snapshot.getValue().toString());
}
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void userIdQueryMethod(final PhisicianHandler handler) {
final String tableName = "UserID";
final String childToBeOrdered = "ID/UserID";
database.getReference(tableName).orderByChild(childToBeOrdered)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
ArrayList<String> dadosMedico = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
dadosMedico.add(snapshot.getValue().toString());
}
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void doctorIdQueryMethod(final PhisicianHandler handler) {
final String tableName = "DoctorID";
final String childToBeOrdered = "ID/DoctorID";
database.getReference(tableName).orderByChild(childToBeOrdered)
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
ArrayList<String> dadosMedico = new ArrayList<>();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
dadosMedico.add(snapshot.getValue().toString());
}
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
public void testQueryMethod(String specialty, final PhisicianHandler handler) {
final String tableName = "CadastroMedico";
final String childToBeOrdered = "mEspecialidade";
DatabaseReference database = FirebaseDatabase.getInstance().getReference()
.child("CadastroMedico");
database.child("mDoctorID")
.child("mNome")
.child("mEspecialidade")
.orderByChild(childToBeOrdered)
.equalTo(specialty);
database.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
ArrayList<String> dadosMedico = new ArrayList<>();
for (DataSnapshot snapshot :
dataSnapshot.getChildren()) {
dadosMedico.add(snapshot.getValue().toString());
System.out.println(snapshot.getValue().toString());
}
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot,
String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot,
String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
但它没有为我工作。当我尝试在日志窗口中显示它时,我收到了这条消息:I/System.out:propertyValue:false,我没有从我的基地获取任何值。我会添加一张图片,以便您可以看到我在说什么。
Image 1: The fields i'm talking about
Document: Screenshots of my whole database
我想什么做的是(在SQL只是举例):*选择mDoctorID,mEmail,mEndereçoFROM CadastroMedico; *
我认为这是可能的,但我不知道如何去做。我会很感激一些关于它的想法。提前致谢。
它取消了对我的代码的警告,但我仍然没有得到任何我的Firebase数据库中的值 – Caio
那是因为引用是错误的,请发布您的数据库的整个结构 –
您的意思是我的代码或我的数据库的屏幕截图? – Caio