如何将LocalDate“放入”SQLite数据库

问题描述 投票:0回答:1

我需要将日期字段插入 SQLite 数据库。

我使用 Kotlin,并选择 LocalDate 类来处理日期。

我创建了一个具有 LocalDate 字段的类:

data class Pillola(..., val startDay: LocalDate = LocalDate.now())

然后我尝试使用

put
将数据
ContentValues
放入数据库,如下所示:

    val values = ContentValues().apply{
        put(COLUMN_START_DAY, pillola.startDay)
    }

但是我收到错误:

enter image description here

我该如何修复或可以使用什么其他方法?

kotlin localdate
1个回答
0
投票

使用 toString()

您可以使用

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)

如何将 LocalDate 与房间实体一起使用

例如,如果您有这样的实体

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()
© www.soinside.com 2019 - 2024. All rights reserved.