Reputation: 4514
How can I insert data in Room database using data class? I tried inserting but it fails with -1 as response in the response ?
How to get error message when something fails in Room Database
?
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
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
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