2016-12-08 232 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

恩,非常感謝!我絕對明白你的觀點。我完全可以完成這個過程。 :)但是,正如你可能知道它是一個相對非常複雜的方法。因此,最終以我嘗試這樣做的方式完成它是不可能的? –