【问题标题】:How to insert/update SQLite Database in Android?如何在 Android 中插入/更新 SQLite 数据库?
【发布时间】:2021-09-28 05:21:35
【问题描述】:

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

【问题讨论】:

  • 你在使用房间数据库吗?至少添加一些您尝试过的代码 sn-p 以便我们可以帮助您
  • @unownsp 不,我正在使用 SQLite。

标签: android android-sqlite android-database android-sql


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您使用的是房间数据库,您可以按如下方式插入/更新:

    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 的项目,那么 updateItem 将在 'catch' 中被调用

    您的数据库项 DAO 应该如下所示:

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

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多