Sumit Shukla
Sumit Shukla

Reputation: 4514

Insert data in room database using data class object

Code:

 @Insert(onConflict = OnConflictStrategy.IGNORE)
 fun insertData(dataclass: DataClass): Long

Insertion:

var result = dao.insertData(DataClass(id=1,name="Hello")) //result is -1

Upvotes: 0

Views: 652

Answers (2)

pmjr
pmjr

Reputation: 80

I usually access it from local data source class and use it in view model (I use Hilt for dependency injection)

Entity class:

@Entity(tableName = PROGRESS_BOOK_TABLE)
class ProgressBookEntity(
    var progressBook: AllProgressBookEntry
) {
    @PrimaryKey(autoGenerate = false)
    var id: Int = 0
}

Dao

@Dao
interface ProgressBookDao {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insertProgressBook(progressBookEntity: ProgressBookEntity)
}

Local Data Source

class LocalDataSource @Inject constructor(
    private val progressBookDao: ProgressBookDao
) {
    suspend fun insertProgressBook(progressBookEntity: ProgressBookEntity) {
        progressBookDao.insertProgressBook(progressBookEntity)
    }
}

From related view model class:

private fun insertProgressBook(progressBookEntity: ProgressBookEntity) {
        viewModelScope.launch(Dispatchers.IO) {
            repository.local.insertProgressBook(progressBookEntity)
        }
    }

And call the function in a fragment or activity file and pass the value of your preferred data class type.

Upvotes: 1

Elham Dabiri
Elham Dabiri

Reputation: 415

Code:

@Dao
public interface DaoName{
      @Insert
         public void insertData(DataClass dataclass);
}

Insertion:(Put this code in a Thread)

 MyDatabase db = MyDatabase.getInstance(Context);
 DataClass dataClass = new DataClass();
 dataClass.id = 1
 DataClass.name = "Hello"
 db.DaoName().insertData(dataClass);

Upvotes: 1

Related Questions