2016-12-08 241 views
1

我正在尝试使用Firebase数据库登录,其中我已经存储了一些数据。使用Android Studio查询Firebase数据库

This is my Database tree!

,所以我需要发布一些类型的查询搜索其匹配所输入的凭证输入特定节点,并查看确认其参考的关键。 这是我的代码,它似乎并不成功,因为它总是用于例外情况,并发出错误敬酒。 我不止是有义务解决我的问题。

public class LogInActivity extends AppCompatActivity { 

    DatabaseReference Rootref = FirebaseDatabase.getInstance().getReference(); 
    DatabaseReference mwritefarmref = Rootref.child("WRITE FARM"); 
    DatabaseReference muserprofilestab = mwritefarmref.child("USER PROFILES"); 

    EditText mobinputtext; 
    EditText passwordinputtext; 
    TextView tv; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_log_in); 

     mobinputtext = (EditText) findViewById(R.id.mobinputtext); 
     passwordinputtext = (EditText) findViewById(R.id.passinputtext); 
     tv = (TextView) findViewById(R.id.textView); 

     Button submitbutton = (Button) findViewById(R.id.submitbutton); 
     submitbutton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        DatabaseReference muserid = (DatabaseReference) muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 
        tv.setText(muserid.getKey()); 
       }catch (Exception e){ 
        Toast.makeText(LogInActivity.this, "ERROR!!", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

    } 
} 
+0

我将首先更改数据库结构。另外,请避免在'keys'中有空格。使用camelCaseLetters。 –

+0

哦!感谢您的建议! :D –

+0

但是现在有没有办法在这个DataBase本身上执行所需要的?! –

回答

0

您无法将查询转换为DatabaseReference。相反的:

DatabaseReference muserid = (DatabaseReference) muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 

做到这一点:

Query myquery = muserprofilestab.orderByChild("Mobile number").equalTo(mobinputtext.getText().toString()); 
+0

非常感谢您的回复! :) 但我已经尝试过...... 一旦我添加了这样的查询,然后输出获得的查询的KEY,它将返回“USER PROFILES”,而我们想要的是“3120100004” SOOOO? –

0

火力地堡不是一个关系数据库。这是一个NOSql数据库。事情在这里有点不同。速度是最终的目标,而不是他们所说的空间!
如果您想根据移​​动设备没有输入检索父密钥,则在根目录下创建另一个节点'MobileNoDetails'。在'MobileNoDetails'节点下存储用户手机号码作为密钥,并在其下存储用户父密钥“31201000004”。这就是您在输入手机号码时如何检索用户父键的方法。

+0

恩,非常感谢!我绝对明白你的观点。我完全可以完成这个过程。 :)但是,正如你可能知道它是一个相对非常复杂的方法。因此,最终以我尝试这样做的方式完成它是不可能的? –