我需要将日期字段插入 SQLite 数据库。
我使用 Kotlin,并选择 LocalDate 类来处理日期。
我创建了一个具有 LocalDate 字段的类:
data class Pillola(..., val startDay: LocalDate = LocalDate.now())
然后我尝试使用
put
将数据 ContentValues
放入数据库,如下所示:
val values = ContentValues().apply{
put(COLUMN_START_DAY, pillola.startDay)
}
但是我收到错误:
我该如何修复或可以使用什么其他方法?
您可以使用
LocalDate.toString()
方法。
它将以 ISO-8601 格式存储日期,如 文档
中所述在您的示例中,如下所示
val values = ContentValues().apply{
put(COLUMN_START_DAY, pillola.startDay.toString())
}
ContentValues 不能具有错误中提到的其他类型(Boolean、Byte、ByteArray、Double、Float、Int、Long、Short、String)
例如,如果您有这样的实体
data class MyEntity(
val date: LocalDate
)
您可以创建一个 TypeConverter ,允许您使用 LocalDate 而不是字符串
class LocalDateConverter {
@TypeConverter
fun localDateToString(localDate: LocalDate): String = localDate.toString()
@TypeConverter
fun stringToLocalDate(localDate: String): LocalDate = LocalDate.parse(localDate)
}
不要忘记使用转换器注释您的数据库
@TypeConverters(LocalDateConverter::class)
abstract class MyDatabase: RoomDatabase()