Sqlite
sqlite的基础数据类型
SQLite 是一个轻量级的数据库系统,它支持一套相对简单的数据类型。在 SQLite 中,所有值都以以下五种基础数据类型之一存储:
- NULL:
- 这个类型用于表示缺失的值或空值。
- INTEGER:
- 这种数据类型用于存储整数值。根据整数的大小,SQLite 可以动态调整存储空间,从 1 字节到 8 字节不等。
- REAL:
- 用于存储浮点数,通常是双精度64位IEEE浮点数。
- TEXT:
- 用于存储文本数据。SQLite 使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)来存储字符串。
- BLOB:
- 代表“二进制大对象”,用于存储二进制数据,存储的内容完全按照输入的原样存储。
在Room中使用Date日期类型
data class CompletionRecord(
@PrimaryKey val id: String = UUID.randomUUID().toString(),
@NotNull val goalId: String,
// 这块需要存储记录是哪一天
@NotNull val completionTime: Date = Date(System.currentTimeMillis()),
)
其中Date并没有对应的sqlite类型,如果此时要存储需要进行类型转换,以下是类型转换代码
import androidx.room.TypeConverter
class SqliteConverts {
@TypeConverter
fun dateToLong(date: java.sql.Date): Long {
return date.time
}
@TypeConverter
fun longToDate(time: Long): java.sql.Date {
return java.sql.Date(time)
}
}
在数据库入口添加转换器代码
@TypeConverters(SqliteConverts::class)
abstract class GoalDatabase : RoomDatabase()