用kotlin实现使用SQLite开发一个简易通讯录,可以添加新记录,记录姓名和手机号码信息。
时间: 2025-02-11 22:35:01 浏览: 22
在Kotlin中,我们可以使用Room Persistence Library结合SQLite数据库来开发一个简单的通讯录应用。以下是基本步骤:
1. **添加依赖**:
首先,在`build.gradle`文件中添加对 Room 和 SQLite 的依赖:
```groovy
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
implementation "junit:junit:${junit_version}"
testImplementation "androidx.test.ext:junit:${test_ext_junit_version}"
androidTestImplementation "androidx.test.espresso:espresso-core:${test_espresso_core_version}"
```
2. **创建数据模型**:
创建一个`Contact`数据类,包含姓名和电话号码属性:
```kotlin
data class Contact(val name: String, val phoneNumber: String)
```
3. **创建数据库实体**:
使用@Entity注解创建一个Room数据库实体,映射到数据模型:
```kotlin
@Entity(tableName = "contacts")
data class ContactEntity(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
val name: String,
val phoneNumber: String
)
```
4. **创建数据库访问接口**:
定义一个Repository接口,其中包含添加联系人等操作:
```kotlin
interface ContactRepository {
suspend fun addContact(contact: ContactEntity): Boolean
suspend fun getAllContacts(): List<ContactEntity>
}
```
5. **实现数据库访问**:
在RoomDatabase子类中创建DAO和初始化Repository:
```kotlin
@Dao
interface ContactDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertContact(contact: ContactEntity)
@Query("SELECT * FROM contacts")
suspend fun getAllContacts(): List<ContactEntity>
}
@Database(entities = [ContactEntity::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun contactDao(): ContactDao
companion object {
private var INSTANCE: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java, "contact_database"
).build()
INSTANCE = instance
instance
}
}
}
}
```
6. **使用Repository**:
在需要的地方注入Repository并操作数据库,比如Activity或ViewModel:
```kotlin
class MainActivity(private val repository: ContactRepository) : AppCompatActivity() {
// 添加联系人和获取所有联系人的方法
}
```
阅读全文
相关推荐










