room DataBase
Tue Oct 29 2024 17:09:30 GMT+0000 (Coordinated Universal Time)
Saved by @signup1
//main activity.kt import android.os.Bundle import android.widget.Toast import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.* import androidx.compose.material3.Button import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview import com.example.myapplication.ui.theme.User import com.example.myapplication.ui.theme.UserDatabase 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.fillMaxSize().padding(16.dp)) { Text(text = "Enter your details here") Spacer(modifier = Modifier.height(25.dp)) OutlinedTextField( value = name, onValueChange = { name = it }, label = { Text(text = "Enter your name") }, modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(25.dp)) OutlinedTextField( value = phone, onValueChange = { phone = it }, label = { Text(text = "Enter your phone number") }, modifier = Modifier.fillMaxWidth() ) Spacer(modifier = Modifier.height(25.dp)) Button(onClick = { scope.launch(Dispatchers.IO) { userDao.insert(User(username = name, phone = phone)) } Toast.makeText(context, "Record Inserted Successfully", Toast.LENGTH_LONG).show() }) { Text(text = "Insert Now") } } } @Preview(showBackground = true) @Composable fun PreviewInsertRecord() { val mockDatabase = UserDatabase.getInstance(context = LocalContext.current) // Use a mock database for preview InsertRecord(mockDatabase) } // user.kt(create data class file) import androidx.room.Entity import androidx.room.PrimaryKey @Entity(tableName = "users") data class User( @PrimaryKey(autoGenerate = true) val uid: Int? = null, val username: String, val phone: String ) { } // userdao.kt(create interface) package com.example.myapplication.ui.theme import androidx.room.Dao import androidx.room.Insert @Dao interface UserDAO { @Insert suspend fun insert(user: User) } // userdatabase.kt(create class file) import android.content.Context import androidx.room.Database import androidx.room.Room import androidx.room.RoomDatabase @Database(entities = [User::class], version = 1) 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 } } } } //plugins{ // kotlin("kapt") //} //dependendcies{ // 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") //} *********
Comments