Android 如何使用greendao或ORMLite在数据库中动态创建表?

Android 如何使用greendao或ORMLite在数据库中动态创建表?,android,sqlite,ormlite,greendao,Android,Sqlite,Ormlite,Greendao,如何使用greendao或ORMLite在数据库中动态创建表?当用户按下按钮时,我想在数据库中创建新表,对于数据库中的每个新表,数据模型是相同的,但我需要具有不同名称的表。这可能吗?关于绿岛: 不可能动态创建新表。使用greendao,处理数据库的代码由J2SE应用程序(使用daogenerator)在开发站上创建 关于奥姆利特: 直到现在我才开始使用Ormlite,但我怀疑在运行时生成新表是可能的 结论: 在数据库设计中,必须在运行时创建新表是一种糟糕的做法,因为您无法从ORM框架中获益。这样

如何使用greendao或ORMLite在数据库中动态创建表?当用户按下按钮时,我想在数据库中创建新表,对于数据库中的每个新表,数据模型是相同的,但我需要具有不同名称的表。这可能吗?

关于绿岛: 不可能动态创建新表。使用greendao,处理数据库的代码由J2SE应用程序(使用daogenerator)在开发站上创建

关于奥姆利特: 直到现在我才开始使用Ormlite,但我怀疑在运行时生成新表是可能的

结论: 在数据库设计中,必须在运行时创建新表是一种糟糕的做法,因为您无法从ORM框架中获益。这样的设计也很难维护(如果不是不可能的话)和/或测试。除此之外,对于其他开发人员来说,这样的设计可能很难理解,因为它确实很少见。 因此,您应该重新设计数据库模式

您可以使用SQLite

public void createUserTable(DatabaseOperations d, String user) {
    final SQLiteDatabase db = getWritableDatabase();
    String CREATE_TABLE_NEW_USER = "CREATE TABLE " + user + " (" + UserInfo.NOTES + " TEXT)";
    db.execSQL(CREATE_TABLE_NEW_USER);
    db.close();
}

为什么呢?添加第二个表:
table
,其中包含
id
name
列。然后在第一个表中添加
表id
。。。现在,您可以将所有这些数据存储在第一个表中(而不是将要添加到表的行中的新表添加到表中,并使用它的id(作为表的id)插入到第一个表中)。感谢您的回复,但这并不是解决我问题的方法。我有一组字典,我创建了一个表,在其中存储关于每个字典的数据(词典名称,作者…)但我需要当用户想要安装新词典以创建具有该词典名称的新表时,在新表中我要存储该词典的单词。它是…生成表单词(id,单词,翻译,dictionaryID)和表字典(id,名称,作者等)…您不需要为每一本词典创建新词表…只需使用dictionary表中的dictionary ID外键即可。。。