gpt4 book ai didi

java - 如何在另一个类中为 SQLite 数据库管理类使用 get 方法?

转载 作者:行者123 更新时间:2023-11-30 03:11:46 25 4
gpt4 key购买 nike

我想做的是从另一个数据库管理器类中检索一个 ArrayList。不幸的是,由于管理器类不能静态工作,我所能做的就是在另一个类中创建一个实例,然后调用该方法。然后我开始将同一个实例传递给请求 SQLiteDatabase 对象的方法。现在我陷入了困惑,而我真正想要做的就是检索 arraylist 以显示 SQL 列中元素的 ListView 。

编辑:我的帖子不够清晰,所以我会尝试准确说明哪里出了问题以及我要在这里完成什么:

在显示(输出) Activity 中,我尝试使用 ListView 来显示 SQL 数据库中包含的元素。目前,我只关注一栏(作业名称)。我的方法涉及使用内置于数据库管理器类中的 get 方法,但由于您无法静态引用该方法,因此我尝试通过创建该管理器类的实例来使用该方法。这将返回一个由 Inputted 对象组成的 ArrayList(每个对象都包含一个名称)。它似乎有效,但在运行程序时,LogCat 抗议我正在递归调用 getDatabase。在线查看后,人们建议我通过更改请求 (SQLiteDatabase db) 作为参数的方法来解决此问题,以便在管理器中使用相同的数据库。现在我在这里感到困惑——我不确定要从显示 Activity 中将什么传递给这个方法。从我从评论中听到的情况来看,我的 get 方法没有正确遍历 SQL 数据库,这也无济于事。如果你能解决这个难题,谢谢!

我将发布我的诊断代码,希望外部 View 能够准确显示我在这里尝试的一切问题。

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);

最佳答案

您的代码有点困惑...在 while 循环的每次迭代中,您都在递增光标 (names.moveToNext());你也在增加 go。

结果是:

第一次迭代:您正在从第一个查询的第一列中获取数据

第二次迭代:您正在从第二个查询的第二列中获取数据

等...

我假设您希望每次迭代都从数据库的同一列中读取数据。

试试这个:

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();
}
}

关于java - 如何在另一个类中为 SQLite 数据库管理类使用 get 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com