我想查询是否在数据库中找到某个值。我想要做的是获取要查询的值的引用并进行遍历,如果找到相等的值,它会打印一个 toast,并计算它找到该值的次数。它不是在这里做的,我认为这就是我获得参考的方式。
对数据库的引用在一个单独的类中,对于这种情况,我想在这个类中查阅对文档字段“doc”的引用。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pollamundialista);
enviar = (ImageButton) findViewById(R.id.enviar1);
//Datos personales
nom = (EditText) findViewById(R.id.nom);
doc = (EditText) findViewById(R.id.doc);
email = (EditText) findViewById(R.id.email);
phone = (EditText) findViewById(R.id.phone);
//Predicciones
a1a2_a1 = (EditText) findViewById(R.id.a1a2_a1);
a1a2_a2 = (EditText) findViewById(R.id.a1a2_a2);
final DatabaseReference uniagust = database.getReference(FirebaseReferences.REFERENCE_1);
final DatabaseReference polla = database.getReference(FirebaseReferences.REFERENCE_2);
//Consulta
//bbdd = FirebaseDatabase.getInstance().getReference(FirebaseReferences.REFERENCE_2);
enviar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Consultando una referencia
Query q=uniagust.orderByChild("doc").equalTo("963258");
q.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
int cont=0;
for(DataSnapshot datasnapshot: dataSnapshot.getChildren()){
cont++;
Toast.makeText(PollaMundialista.this, "Encontrado "+cont, Toast.LENGTH_LONG).show();
}
if(cont<0){
Toast.makeText(PollaMundialista.this, "El valor no se encuentra registrado"+cont, Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
});
}
firebase 数据库如下所示:
参考类:
public class FirebaseReferences {
final public static String REFERENCE_1 = "uniagust";
final public static String REFERENCE_2 = "polla";
}
要比较值,您应该首先更改 for 的 DataSnapshot 的名称,因为它与引用的名称不同,因为它通过数组并从中返回值
您的 doc 值是 firebase 中的 string 类型,您可以看到它,因为它具有 "" ,首先我所做的是将 doc 引用的值保存在一个字符串中,然后我比较贯穿快照的每个值具有该字符串的节点,如果它们相等,我会增加计数器。我使用equals,因为我们比较
Strings