//mainactivity.kt import android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.Button import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val database = UserDatabase.getInstance(this) insertRecord(database) } } } @Composable fun insertRecord(database: UserDatabase) { val context = LocalContext.current val userDao = database.userDao() var name by remember { mutableStateOf("") } var phone by remember { mutableStateOf("") } val scope = rememberCoroutineScope() Column( modifier = Modifier .fillMaxWidth() .padding(16.dp) ) { Text(text = "Enter your details here") Spacer(modifier = Modifier.height(16.dp)) OutlinedTextField( value = name, onValueChange = { name = it }, label = { Text(text = "Enter your name") }, modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(8.dp)) OutlinedTextField( value = phone, onValueChange = { phone = it }, label = { Text(text = "Enter your phone number") }, modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(16.dp)) Button( onClick = { scope.launch(Dispatchers.IO) { userDao.insert(User(userName = name, userPhone = phone)) } Toast.makeText(context, "Record Inserted successfully", Toast.LENGTH_LONG).show() } ) { Text(text = "Insert Now") } } } //User.kt(create Data Class ) import androidx.room.Entity import androidx.room.PrimaryKey @Entity(tableName = "user_table") data class User( @PrimaryKey(autoGenerate = true) val id: Int = 0, val userName: String, val userPhone: String ) // UserDAO.kt(create interface) import androidx.room.Dao import androidx.room.Insert import androidx.room.OnConflictStrategy import androidx.room.* @Dao interface UserDao { @Insert(onConflict = OnConflictStrategy.REPLACE) suspend fun insert(user: User) } //class UserDatabase.kt import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase @Database(entities = [User::class], version = 1, exportSchema = false) abstract class UserDatabase : RoomDatabase() { abstract fun userDao(): UserDao companion object { @Volatile private var INSTANCE: UserDatabase? = null fun getInstance(context: Context): UserDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( context.applicationContext, UserDatabase::class.java, "user_database" ).build() INSTANCE = instance instance } } } } //dependencies plugins-kotlin("kapt") val room_version="2.6.1" implementation("androidx.room:room-runtime:$room_version") kapt("androidx.room:room-compiler:$room_version") // for annotation processing implementation("androidx.room:room-ktx:$room_version")