Java 我想使用AsyncTask将现有sqlite数据库中的列项显示到autocompletetextview中

Java 我想使用AsyncTask将现有sqlite数据库中的列项显示到autocompletetextview中,java,android,sqlite,android-asynctask,Java,Android,Sqlite,Android Asynctask,这是我的getall()方法,它位于DataBaseHelper类中 public ArrayList<String> getAll(){ ArrayList<String> listUsers = new ArrayList<String>(); SQLiteDatabase db = this.getWritableDatabase(); Cursor c; try {

这是我的
getall()
方法,它位于
DataBaseHelper
类中

public ArrayList<String> getAll(){
        ArrayList<String> listUsers = new ArrayList<String>();
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor c;

        try {
            c = db.rawQuery("SELECT * FROM bank"  , null);
            if(c == null) return null;

            String name;
            c.moveToFirst();
            do {
                name = c.getString(1);
                listUsers.add(name);
            } while (c.moveToNext());
            c.close();
        } catch (Exception e) {
            Log.e("blushmaq", e.getMessage());
        }

        db.close();

        return listUsers;
    }

我得到了错误
ArrayIndexOutofBoundException Length=0 Index=0

您的数据库似乎没有任何值,或者您没有正确声明任何数组。 并检查条件“if(brands!=null)”以及brand.size()>0

重新安装应用程序

原因是,

  • 您可以创建项目并为数据库添加代码
  • 2.安装应用程序

    3.再次在数据库中进行任何更改

    此时数据库未更新

    这样做。

    只需使用onUpgrade(作为覆盖)方法,就可以将数据库升级放在那里。这样,当应用程序已经安装时,现有数据都不会被吹走

    并确保您不会像当前在上所做的那样放下桌子:

    db.execSQL("DROP TABLE IF EXISTS bank");
    
    如果你不想这样做

    卸载应用程序并再次安装


    reference

    您的myDbHelper.getAll()是否返回一些值?完整的堆栈跟踪将有所帮助。@PramodWaghmare它实际上没有存储任何内容。调试显示值0。@JornBuitink堆栈跟踪显示表名不存在。检查我的回答尝试使用brand.size()>0,它不会给出任何错误,但edittext中仍然没有显示任何建议。1)您收到brand中的任何值吗?如果没有,则首先在sqlite DB中插入值,然后重试。如果db是空的,那么它什么也不显示。我不知道如何检查品牌的内容。你能帮我吗?数据库已经包含了这些记录。它不是空的,品牌没有任何价值。我做了一个系统输出打印。我得到的错误是表不存在。然后首先在数据库中插入所需的值。然后从数据库中检索值。事情是..我没有对数据库做任何更改。我只想从中读取记录并显示。数据库已经创建。我的应用只想访问和显示其内容。卸载应用,然后重新安装
    db.execSQL("DROP TABLE IF EXISTS bank");