gpt4 book ai didi

java - 如何将我的第一行和后续行插入到我的 Android 项目数据库中

转载 作者:行者123 更新时间:2023-12-01 10:29:29 25 4
gpt4 key购买 nike

我有一个 DatabaseHelper 类,它可以构建我的所有表并处理查询等。

但是,有一件事难倒了我。

我有一个包含以下列的 list 表:

checklist_id, int, primary key
start_time, text
end_time, text

这是我的“insertChecklist()”方法,它将在表中插入一行:

public long insertChecklist(Checklist checklist){
// Get reference of the ChecklistDB database
SQLiteDatabase db = this.getWritableDatabase();

// Make values to be inserted
ContentValues values = new ContentValues();
values.put(ChecklistContract._ID, checklist.getId());
values.put(ChecklistContract.COLUMN_NAME_START_TIME, checklist.getStartTime());
values.put(ChecklistContract.COLUMN_NAME_END_TIME, checklist.getEndTime());

// Insert the new row, returning the primary key value of the new row
long newRowId;
newRowId = db.insert(
ChecklistContract.TABLE_NAME,
null, //COLUMN_NAME_NULLABLE (set to null to not insert new row where there are no values)
values);

// close database transaction
db.close();

return newRowId;
}

所以我按如下方式使用这个函数:

  1. 我创建一个 Checklist 对象
  2. 我将其传递到我的 insertChecklist() 方法

但是,我如何知道如何在我的 Checklist 对象中创建 id?

Checklist checklist = new Checklist(id??, startTime, endTime); 
// the "id" needs to be the equal to the last id in the table, plus 1

insertChecklist(checklist);

有没有人有 SQLite 数据库的经验可以帮助我解决这个问题?我这样做是错误的吗?

最佳答案

insert() 函数返回新行的 rowid

如果您的表有 autoincrementing ID ,即 INTEGER PRIMARY KEY 或 INTEGER PRIMARY KEY AUTOINCRMENT 列,那么这与 rowid 相同。

在这种情况下,要自动分配新值,请不要将任何 ID 值放入 ContentValues 中,并将对象的 ID 设置为插入():

public void insertChecklist(Checklist checklist) {
SQLiteDatabase db = this.getWritableDatabase();
try {
ContentValues values = new ContentValues();
values.put(ChecklistContract.COLUMN_NAME_START_TIME, checklist.getStartTime());
values.put(ChecklistContract.COLUMN_NAME_END_TIME, checklist.getEndTime());

long id;
id = db.insertOrThrow(ChecklistContract.TABLE_NAME, null, values);
checklist.setId(id);
} finally {
db.close();
}
}

关于java - 如何将我的第一行和后续行插入到我的 Android 项目数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35168598/

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