onDataChange方法在android studio中不起作用

时间:2019-02-14 12:51:15

标签: java android firebase firebase-realtime-database

我正在使用Android Studio应用程序,并且使用了Firebase实时数据库。我有一个问题,请寻求帮助。数据库中的表名称为<!DOCTYPE html> <html> <head> </head> <body> <h1>Login</h1> <form id="idForm" action="login_api.php" method="post" target="_blank"> Name <input type="text" name="username" required/><br> Password <input type="text" name="password" required/><br> <input type="hidden" name="req" value="login"> <input type="submit" id="submit" value="Create"/> </form> </body> <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script> $("#idForm").submit(function(e) { var form = $(this); var url = form.attr('action'); $.ajax({ type: "POST", url: url, data: form.serialize(), // serializes the form's elements. success: function(data) { console.log(data); // show response from the php script in console. } }); e.preventDefault(); // avoid to execute the actual submit of the form. }); </script> </html> ,属性为Hospitalhospital_namehospital_codehospital_passwordhospital_phone

信息添加成功,但是我无法从数据库中检索信息(医院名称和医院代码),并且我搜索并使用了不同的方法,但问题仍然存在。应该的代码将从hospital_email表中检索信息,并在应用程序中显示它。

Hospital

数据库结构:

enter image description here

4 个答案:

答案 0 :(得分:0)

不要使用 .child("Hospital").child("QCH")供参考

您的ref将在此

FirebaseDatabase.getInstance().getReference().child("Hospital")

您将获得dataSnapshot

中的所有记录

修改

尝试将dataSnapshot转换为您的Hospital模型并从中获取值

FirebaseDatabase.getInstance()。getReference()。child(“ Hospital”)。child(“ QCH”)

答案 1 :(得分:0)

如果您想通过身份证获得特定的医院。

使用以下查询。

databaseRef.orderByChild("hostpital_code").equals(yourCode);

因此,您的完整查询将是:

ref = FirebaseDatabase.getInstance().getReference().child("Hospital").orderByChild("hostpital_code").equals("QCH");

如果您有任何问题,请告诉我。

答案 2 :(得分:0)

根据您的评论:

  

单个记录,其中医院代码=“ QCH”

请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference ref = rootRef.child("Hospital").child("QCH");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String hospitalName = dataSnapshot.child("hospital_name").getValue(String.class);
        String hospitalCode = dataSnapshot.child("hospital_code").getValue(String.class);
        Log.d(TAG, hospitalName + " / " + hospitalCode);
    }

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

您的logcat中的结果将是:

hjkk / QCH

答案 3 :(得分:0)

  ref = FirebaseDatabase.getInstance().getReference().child("Hospital");
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //use for loop iterator here 
    for(DataSnapshot data1:dataSnapshot){
     //this will print the key and value in console use it as you wish.
        log.i("TAG",data1.child().getKey()+"::"+data1.child.getValue()); 
    }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });