当前位置: 首页 > 知识库问答 >
问题:

查询Equalto和Document没有从FiRecovery DB获取数据

石喜
2023-03-14

我是使用Android Studio和FiRecovery DB的新手。我正在尝试将几行文本从fiRecovery加载到我的android应用程序中。我在调试时注意到Equalto字段名称的代码行没有读取所需的数据。我不知道我在获取数据时哪里出错了。任何帮助都将不胜感激。这是我的代码。

查看活动。班

public class ViewActivity extends AppCompatActivity implements View.OnClickListener {
    private static String topic_name;
    ImageButton next, previous;
    TextView text_area;
    private Information infodb;
    public static List<String> mFragments;
    private Query query;

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

        FetchDetails();
        text_area= (TextView)findViewById(R.id.tf_text);
        next = (ImageButton) findViewById(R.id.next);
        next.setOnClickListener(this);
        previous = (ImageButton) findViewById(R.id.previous);
        previous.setOnClickListener(this);



    } 

public void FetchDetails(){
        FirestoreUtil.getCollection("Information Text").whereEqualTo("topic_name",topic_name).get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if(task.isSuccessful()) {
                   
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Information ip = document.toObject(Information.class);
                        mFragments=(ip.getFragments());
                        text_area.setText(ip.getFragments().get(0));
                    }

                }
            }
        });
    }
@Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.next:
                text_area.setText(infodb.getFragments().get(1));
                break;


            case R.id.previous:
               text_area.setText(infodb.getFragments().get(2));
                break;
        }
    }
}

我nformation.class


public class Information {

    public List<String> fragments;
    private int topic_id;
    private String topic_name;
    private String game;
    private String link;
    private int level;


public Information() {

}

public Information(String topic_name, List<String> fragments,String game, String link, int level,int topic_id)
{
    this.fragments = fragments;
    this.topic_name= topic_name;
    this.game=game;
    this.topic_id=topic_id;
    this.level = level;
    this.link=link;


}

    public Information(List<String> fragments) {

    this.fragments=fragments;
    }

    public String getTopic_name() {return topic_name;}
    public void setTopic_name(String topic_name) {
        this.topic_name = topic_name;
    }

    public void setFragments(List<String> fragments) {
        this.fragments = fragments;
    }
    public List<String> getFragments() {
        return fragments;
    }

    public String getGame() { return game; }
    public void setGame(String game) { this.game = game; }

    public String getLink() { return link; }
    public void setLink(String link) { this.link = link; }

        public void setLevel(int level) {
        this.level = level;
    }
       public int getLevel() {
        return level;
    }

    public void setTopic_id(int topic_id) {this.topic_id=topic_id;}
    public int getTopic_id() {
        return topic_id;
    }

}

这是我在firestore控制台上的数据截图

共有1个答案

公孙鸿才
2023-03-14

查看了您提供的代码后,我发现ViewActivity中的变量private static topic\u name。类已声明,但未在任何位置初始化。因此,默认情况下,主题名称将为空值。这就是为什么您不能在whereEqualTo(“topic\u name”,topic\u name)方法之后获取文档的原因。

因此,请使用Firestore集合中存在的值初始化私有静态topic\u name变量。您可以按如下方式初始化它-

private static String topic_name = “Understanding PTSD”

您还使用了FirestoreUtil。getCollection()方法获取集合。但是,在Firestore文档中,使用Firestore数据库引用来获取集合。“db”Firestore数据库引用可以按此处所述进行初始化。

因此,我建议您在ViewActivity中初始化Firestore数据库引用。等级如下-

FirebaseFirestore db = FirebaseFirestore.getInstance();

然后使用此引用获取集合,如下所示-

db.collection("Information Text").whereEqualTo("topic_name",topic_name).get()
 类似资料:
  • 问题内容: 我有一个视图vwGetData,它从两个表t1,t2中获取数据并具有字段: 我将在下面提供输入 我想在C#/ SQL中获得以下输出 或者 我想使用C#和SQL做到这一点。 问题答案: 您要做的第一件事是确保没有数据被返回: 现在假设您知道如何设置一个DataReader,您将执行以下操作: 您也可以查看SQL Catalog SYS视图。

  • 问题内容: 在我的代码中,我正在使用。 然后,我执行该方法以填充准备好的语句的通配符。 在调用该方法并执行查询之前,我是否有办法检索(并打印出)最终查询?我只想将此用于调试目的。 问题答案: 这在JDBC API合同中没有定义,但是如果幸运的话,有问题的JDBC驱动程序可以通过调用来返回完整的SQL 。即 以我的经验,至少这样做是PostgreSQL 8.x和MySQL 5.x JDBC驱动程序。

  • 问题内容: 我对sql不好,所以任何帮助世界都很棒 我有一个SQL查询,该查询获取从1月到本月注册的记录 我的代码示例 查询将如何带回 2月= 2、3月= 3、4月= 4和5月= 5 我想让它带回Jan = 1(总数为0)和June = 6(总数为0)以及任何想法如何做到这一点? 谢谢你。 问题答案: 这是创建月/年组合并将其用作查询基础的循环:

  • 问题内容: 我正在尝试连接到数据库,运行查询并打印出查询。到目前为止,我已经完成了工作,但是我需要获取输出并将其中的特定部分分配给 我正在使用log4jdbc监视我的查询。 此刻,我得到如下记录的输出: 我想分配给。我该怎么做呢? 问题答案: 通常,a 将为您提供查询(包括绑定参数)。但这取决于的实际实现(例如,使用PostgreSQL隐式实现)。 您提到为您带来回报。我对 log4jdbc 并不

  • 问题内容: 我的代码有问题。 像这样的情况: 我有一个下拉列表,如果选择“个人”,则会出现新的下拉列表,其中包含从数据库查询中检索到的数据;如果选择“公开”,则该下拉列表将消失。 这样的HTML代码: 查询如下: 像这样的JavaScript代码: 我不知道如何将值/结果发送到javascript代码(选择选项中的值和名称)。 问题答案: 在javascript中,您必须对您的php文件进行操作:

  • 问题内容: 通过在页面初始化时关闭连接,然后在Dropdownlist中重新打开来修复此问题。 我一直在寻找这个问题的答案,但是没有任何运气。 我想从选定的下拉列表项到文本框获取数据。我一直在尝试执行此sql查询,但没有成功。 这是我的代码: 问题答案: “ xecuteReader”返回复数/非标量值。使用`` ExecuteScalar ‘’方法代替: