如何在 Android 中 insert/update SQLite 数据库?

How to insert/update SQLite Database in Android?

我正在使用 SQLite 数据库在本地保存一些信息。我想每次都使用相同的用户 ID 更新行,同时为该特定用户 ID 保存新数据。但它应该将数据插入到具有新 userID 的新行中,并且插入也应该在第一次工作。 感谢您的帮助!

如果您正在使用房间数据库,您可以insert/update如下:

AppDatabase appDatabase = Room.databaseBuilder(Activity.this, AppDatabase.class, "db_name")
                    .fallbackToDestructiveMigration()
                    .allowMainThreadQueries()
                    .build();

            DatabaseItems databaseItems = new DatabaseItems();
            databaseItems.setId(userID);
            databaseItems.setName(name);//set other needed data

            try {
                appDatabase.getDatabaseItemDAO().insertItem(databaseItems);

                Toast.makeText(Activity.this, "Added", Toast.LENGTH_SHORT).show();
                
                Log.d("TAG", "onClick: =======================> added");
            } catch (Exception e) {
                appDatabase.getDatabaseItemDAO().updateItem(databaseItems);

                Toast.makeText(Activity.this, "Updated", Toast.LENGTH_SHORT).show();
                
                Log.d("TAG", "onClick: ==========================> updated");
            }

在这个逻辑中,如果您的数据库已经有一个带有 id 的项目,那么将在 'catch'

中调用 updateItem

你的数据库项目 DAO 应该看起来像这样:

@Dao
public interface DatabaseItemsDAO {
    @Insert
    void insertItem(DatabaseItems databaseItems);

    @Update
    void updateItem(DatabaseItems databaseItems);
}

您可以使用此代码更新特定行的数据

    val db = this.writableDatabase
    val values = ContentValues()
    values.put(TITLE, tasks.title)
    values.put(EMAIL, tasks.email)
    values.put(PWD, tasks.pwd)
    val success = db.update(TABLE_NAME, values, "$ID=?", arrayOf(id)).toLong()
    db.close()