我是android studio的初学者,希望在room数据库中存储语言数组列表。有人能建议我怎么做吗?
您可以创建一个用@Entity
注释的类,这样您就有了一个语言表。例如
@Entity
class Language {
@PrimaryKey
Long id = null;
String language;
}
然后,用@Database注释的类将在实体列表中定义语言类,作为@Database注释的一部分。
然后,您可以使用语言的id列值来引用语言。如果使用该语言的任何东西都有一种语言(一种语言-许多(该语言的用户)关系),那么你就会有一个引用(映射/关联/关联)所使用语言的列,例如
@Entity(
// Optional but enforces referential integrity
foreignKeys = {
@ForeignKey(
entity = Language.class,
parentColumns = {"languageId"},
childColumns = {"languageReference"},
// Optional within Foreign Key manage deletion of parent by automatically deleting children
// i.e. deletions are cascaded to the children
onDelete = CASCADE,
// Optional within Foreign Key manage update of parent column/columns that are referenced
onUpdate = CASCADE
)
}
)
class ObjectThatUsesALanguage {
@PrimaryKey
Long ObjectThatUsesALanguageId = null;
@ColumnInfo(index = true) // optional but recommended index
long languageReference; //<<<<< The single language used
}
如果任何使用语言的东西都可以有多种语言,那么对于多个关系,您可以有一个关联/引用/映射表,该表至少有两列,一列用于引用该语言,另一列用于引用该语言的用户。该语言的用户将是一个相对简单的表,没有任何引用。所以你可以:-
@Entity
class ObjectThatUsesManyLanguages {
@PrimaryKey
Long ObjectThatUsesManyLanguagesId = null;
}
而且
@Entity(
primaryKeys = {"ObjectThatUsesManyLanguagesReference","LanguageReference"},
foreignKeys = {
@ForeignKey(
entity = ObjectThatUsesManyLanguages.class,
parentColumns = {"ObjectThatUsesManyLanguagesId"},
childColumns = {"ObjectThatUsesManyLanguagesReference"},
onDelete = CASCADE,
onUpdate = CASCADE
),
@ForeignKey(
entity = Language.class,
parentColumns = {"languageId"},
childColumns = {"LanguageReference"}
)
}
)
class ObjectThatUsesManyLanguagesToLanguageReference {
long ObjectThatUsesManyLanguagesReference;
@ColumnInfo(index = true)
long LanguageReference;
}
但是,对于多-多关系,您可能需要一个POJO(或POJO)来检索语言用户以及语言(和/或相反)
例如。
class ObjectThatUsesManyLanguagesWithLanguages {
@Embedded
ObjectThatUsesManyLanguages objectThatUsesManyLanguages;
@Relation(
entity = ObjectThatUsesManyLanguages.class,
parentColumn = "ObjectThatUsesManyLanguagesId",
entityColumn = "languageId",
associateBy = @Junction(
value = ObjectThatUsesManyLanguagesToLanguageReference.class,
parentColumn = "ObjectThatUsesManyLanguagesReference",
entityColumn = "LanguageReference"
)
)
List<Language> languageList;
}
很多人倾向于忽略正确的/推荐的数据库使用(规范化),而只是希望将对象列表作为一列。
e、 g.类似(不能使用)的内容:-
@Entity
class ObjectThatUsesAListOfManyLanguages {
@PrimaryKey
long id;
List<Language> languageList;
}
如上所述不能使用,列不能是列表/数组
然而,它可以通过一个“holder”类来克服,比如
class LanguageHolder {
List<Language> languageList;
}
结合:-
@Entity
class ObjectThatUsesAListOfManyLanguages {
@PrimaryKey
long id;
LanguageHolder languages;
}
但是类型转换器需要将语言对象列表转换为可以存储的列类型。通常,这是列表的JSON字符串表示形式。
使用这种技术,不需要/使用语言表,因此如果使用语言对象/类,则不需要(不应该)使用@Entity对其进行注释。
我正在创建一个web应用程序,它有一个用户对象,每个用户对象都有一个需要存储到mySQL数据库表中的对象(食物)的ArrayList。我想将整个ArrayList存储到一列中。将其存储为Json会更好吗?或者我应该为每个用户创建一个表来存储ArrayList的各个项目吗?我唯一的问题是数据会被频繁编辑。 编辑:我有供用户和食物使用的桌子。其想法是,用户将食物表中的食物添加到他们的ArrayList
我刚刚实现了离线数据保存的空间。但在实体类中,我会得到以下错误: 类如下: 提前道谢。
我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{
由于我已经从下面的代码中导出了数据库文件,但我无法打开导出的文件,如何打开导出的文件?
所以我根据YouTube上的教程创建了一个房间数据库。我有两个栏day and likes,每个栏都有int.目前,我已经用三行数据手动填充了数据库。 下面是手动填充数据库的代码: 在我的Dao类中,我当前有Insert、Update、deleteAll和getall...方法。这里是道: } 现在,我要从Room数据库中检索基于当天的数据。所以我想要第6天的likes数,它是1。我想检索数据并将
我是Room数据库的新手,我有来自MSGraph API的JSON响应,这是日历事件的列表。 我想将此响应存储在Room数据库中。 来自改型数据的示例响应 我搜索了论坛,但没有得到任何正确的解决方案。我想将此响应存储在Room数据库中。谁能帮我找到正确的方法。 谢谢