genespos Asked: 2024-10-16 04:30:30 +0800 CST2024-10-16 04:30:30 +0800 CST 2024-10-16 04:30:30 +0800 CST 如何将 LocalDate 放入 SQLite 数据库 772 我需要将日期字段插入 SQLite 数据库。 我正在使用 Kotlin 并选择 LocalDate 类来处理日期。 我创建了一个具有 LocalDate 字段的类: data class Pillola(..., val startDay: LocalDate = LocalDate.now()) 然后我尝试使用以下方法将put数据导入数据库:ContentValues val values = ContentValues().apply{ put(COLUMN_START_DAY, pillola.startDay) } 但我收到错误: 我该如何修复或者可以使用什么其他方法? kotlin 1 个回答 Voted Best Answer Jolan DAUMAS 2024-10-16T04:59:56+08:002024-10-16T04:59:56+08:00 使用 LocalDate 而不使用 Room 您可以使用该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.parse(String)将字符串实例化回 LocalDate。 将 LocalDate 与 Room 结合使用 假设你正在使用 Android ORM Room 如果你有一个具有 LocalDate 的实体 @Entity(tableName = "my_entity") data class MyEntity( val date: LocalDate ) 仅当您注册了转换器,转换器将自动将其存储为字符串并将其检索为 LocalDate 时,您才可以使用 LocalDate class LocalDateConverter { @TypeConverter fun localDateToString(localDate: LocalDate): String = localDate.toString() @TypeConverter fun stringToDateTime(localDate: String): LocalDate = LocalDate.parse(localDate) } @TypeConverters不要忘记使用注释注册转换 @TypeConverters(LocalDateConverter::class) abstract class MyDatabase : RoomDatabase()
使用 LocalDate 而不使用 Room
您可以使用该
LocalDate.toString()
方法。它将以文档中提到的 ISO-8601 格式存储日期
在您的示例中,它将是以下内容
ContentValues 不能具有错误中提到的其他类型(Boolean、Byte、ByteArray、Double、Float、Int、Long、Short、String)
当从数据库检索字符串时,您可以简单地使用
LocalDate.parse(String)
将字符串实例化回 LocalDate。将 LocalDate 与 Room 结合使用
假设你正在使用 Android ORM Room
如果你有一个具有 LocalDate 的实体
仅当您注册了转换器,转换器将自动将其存储为字符串并将其检索为 LocalDate 时,您才可以使用 LocalDate
@TypeConverters
不要忘记使用注释注册转换