gpt4 book ai didi

java - 如何从 SQLite 获取一行到具有自定义对象的模型?

转载 作者:行者123 更新时间:2023-12-02 03:41:52 26 4
gpt4 key购买 nike

我正在努力从 SQLite 获取一行。

这是我的 DatabaseHelper fragment :

public Expense getExpense(long id) {

SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(EXPENSE_TABLE_NAME,
new String[]{EXPENSE_COLUMN_ID, EXPENSE_COLUMN_TYPE, EXPENSE_COLUMN_PERSON_IN_DEBT, EXPENSE_COLUMN_AMOUNT,
EXPENSE_COLUMN_DESCRIPTION, EXPENSE_COLUMN_TIMESTAMP, EXPENSE_COLUMN_IS_PAID},
EXPENSE_COLUMN_ID + "=?",
new String[]{String.valueOf(id)}, null, null, null, null);

if (cursor != null)
cursor.moveToFirst();

assert cursor != null;
Expense expense = new Expense(
cursor.getInt(cursor.getColumnIndex(EXPENSE_COLUMN_ID)),
ERROR HERE -> (ExpenseType)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TYPE)),
ERROR HERE -> (Person)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_PERSON_IN_DEBT)),
cursor.getDouble(cursor.getColumnIndex(EXPENSE_COLUMN_AMOUNT)),
cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_DESCRIPTION)),
cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TIMESTAMP)),
cursor.getInt(cursor.getColumnIndex(EXPENSE_COLUMN_IS_PAID))); // true for 1

cursor.close();
db.close();
return expense;
}

费用模型中的构造函数如下所示:

public Expense(int id, ExpenseType expenseType, Person person, Double amount, String description, String timestamp, int isPaid).

我在上面标有错误的行中遇到了强制转换错误

"Inconvertible type; cannot cast 'java.lang.String' to ' com...model.ExpenseType"

我怎样才能做到这一点?在数据库中,对象 expenseTypeperson 作为字符串添加。

最佳答案

用这些行:

(ExpenseType)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TYPE)),
(Person)cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_PERSON_IN_DEBT))

您正在尝试将 2 个字符串转换为 ExpenseType 类型的对象和 Person 类型的对象,但无法完成。
您没有发布类 ExpenseTypePerson,所以我不知道它们的构造函数,但如果它们的构造函数采用字符串作为参数,也许您可​​以这样做:

new ExpenseType(cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_TYPE))),
new Person(cursor.getString(cursor.getColumnIndex(EXPENSE_COLUMN_PERSON_IN_DEBT)))

关于java - 如何从 SQLite 获取一行到具有自定义对象的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56832461/

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