如何使用另一个类SQLite数据库管理类get方法?(How to use a get method

2019-10-19 03:54发布

我所试图做的是从另一数据库管理器类的ArrayList。 不幸的是我所能做的,因为经理类不能静态地工作,是在另一个类中创建一个实例,然后调用该方法。 然后,我让自己陷入到通过同一实例成要求的方法SQLiteDatabase对象。 现在我把自己累得混乱的困境,当我真正想要的是做的是检索数组列表从一个SQL列中显示的元素列表视图。

编辑:我的职位不清晰,所以我会尽力来指定到底是怎么回事错的,什么我想在这里完成:

在显示(输出)的活动,我想用一个ListView显示包含在一个SQL数据库元素。 目前,我只专注于一列(分配名称)。 我的办法涉及使用get内置数据库管理器类的方法,而是因为你不能引用静态方法,我试图通过创建管理器类的实例使用的方法。 这将返回输入对象的ArrayList(每片含名称)。 这似乎已经奏效,但在运行程序时,该logcat的抗议,我是递归调用getDatabase。 网上通缉后,人们建议我改变了方法,要求解决该问题(SQLiteDatabase db)所以同样的数据库获取经理到处滥用作为参数。 现在我弄糊涂这里 - 我不知道该怎么传递到从显示的活动这种方法。 它也没有帮助,从我从听到的意见,我get方法不正确遍历SQL数据库。 如果你能解决这个难题,谢谢!

我会后我的代码进行诊断,希望外界视图将显示究竟有什么不对的一切我想在这里。

public Cursor getAssignmentNames(SQLiteDatabase db) {
    return db.query(false, ASSIGNMENT_TABLE, COLUMN_TITLES, 
            " WHERE " + ASSIGNMENT_NAME + " ", null, null, null, " ORDER BY "+ASSIGNMENT_URGENCY_RATING, null);
}

/

    public ArrayList<Inputted> getListOfAssignments (SQLiteDatabase db) {
        Cursor names = getAssignmentNames(db);
        ArrayList<Inputted> assList = new ArrayList<Inputted>();
        names.moveToFirst();
        while (!cursorsAreAfterLast(names) ) {
            int go = 0;
            assList.add(new Inputted(names.getString(go))

            names.moveToNext();
            go++;
        }
        return assList;
    }

/

DBRecordsLayer assignmentRecords = new DBRecordsLayer(this,
                "assignment.db", null, 1);


        ArrayList<Inputted> assList = DBRecordsLayer.getListOfAssignments(assignmentRecords);

Answer 1:

您的代码是有点混乱......在while循环的每次迭代,你递增光标(names.moveToNext()); 您还增加去。

其结果将是:

第一次迭代:你从第一查询的第一列中获取数据

第二次迭代:你从第二查询的第二列取数据

等等...

我假设你想从数据库中每次迭代的同一列中读取数据。

尝试这个:

public ArrayList<Inputted> getListOfAssignments (SQLiteDatabase db) {
    Cursor names = getAssignmentNames(db);
    ArrayList<Inputted> assList = new ArrayList<Inputted>();

    names.moveToFirst();
    columnContainingStringToSendToInputtedConstructor = x;  //replace the x with column you need from your table
    while (!names.isAfterLast()) {
        assList.add(new Inputted(names.getString(columnContainingStringToSendToInputtedConstructor));

        names.moveToNext();
    }
}


文章来源: How to use a get method for a SQLite Database management class in another class?