【问题标题】:Backendless fetch all data from database but returning one result后端从数据库中获取所有数据但返回一个结果
【发布时间】:2021-10-11 21:18:22
【问题描述】:

我在 Backendless 中设置了一个数据库并开始在 Android Studio 上运行它。该应用程序能够访问数据库并且连接稳定。但是当我运行应用程序时,它只从数据库返回一个结果。是否可以遍历数据库中的所有项目?我使用本教程构建了应用程序:https://www.youtube.com/watch?v=KeYC6gJyt-k&t=1524s&ab_channel=JohanJurrius 这是我的代码。

package com.mbass.examples;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.backendless.Backendless;
import com.backendless.IDataStore;
import com.backendless.async.callback.AsyncCallback;
import com.backendless.exceptions.BackendlessFault;
import com.backendless.persistence.DataQueryBuilder;

import java.util.List;
import java.util.Map;

public class MainActivity extends Activity {
    private TextView status;
    private TextView listtext;
    private Button updateButton;
    List<VIdeos> videos;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);

        Backendless.setUrl(Defaults.SERVER_URL);
        Backendless.initApp(getApplicationContext(), Defaults.APPLICATION_ID, Defaults.API_KEY);

        status = (TextView) findViewById(R.id.status);
        updateButton = (Button) findViewById(R.id.update_button);
        updateButton.setEnabled(false);
        final int[] textViews = {R.id.textView1, R.id.textView2, R.id.textView3};
        String whereClause = "name != 'Bill'";
        DataQueryBuilder queryBuilder = DataQueryBuilder.create();
        queryBuilder.setWhereClause(whereClause);
        queryBuilder.setPageSize(10).setOffset(0);
        queryBuilder.setSortBy("name");


        Backendless.Persistence.of(VIdeos.class).find(queryBuilder, new AsyncCallback<List<VIdeos>>() {
            @Override
            public void handleResponse(List<VIdeos> response) {
                for (int i = 0; i < response.size(); i++) {
                    Toast.makeText(MainActivity.this, "Name: " + response.get(i).getName() + "\n" +
                            "ID: " + response.get(i).getCreated(), Toast.LENGTH_SHORT).show();
                }
            }

            @Override
            public void handleFault(BackendlessFault fault) {
                Toast.makeText(MainActivity.this, fault.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}

                                    

【问题讨论】:

    标签: java android android-studio backendless


    【解决方案1】:

    注释掉这一行会发生什么?

    queryBuilder.setWhereClause(whereClause);
    

    【讨论】:

    • 应用只从数据库发送一个结果。
    • 我假设您说“从数据库返回”。你是在裁判 foreach toast 消息吗?在你的 foreach 循环中添加 System.out.println(response.get(i).getName())。
    • 另外,您的数据库中有多少条目? (理智的人也可以使用调试器查看“响应”中的内容)
    • 1.我的数据库中有两个条目。 2.我应用了toast方法,因为教程使用了它。
    • 其中有一个叫比尔吗?再添加几个。
    【解决方案2】:

    您的代码使用以下代码行将页面大小设置为 10 个对象: queryBuilder.setPageSize(10).setOffset(0)

    响应是一个包含 10 个对象的数组。如果您需要更多对象,请更改页面大小。最大页面大小为 100

    【讨论】:

    • 我尝试将页面大小更改为 100,但应用仍然返回 1 个结果。
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    相关资源
    最近更新 更多