似乎有很多不必要的工作需要手动为每个要存储在数据库中的对象编写一个类文件,以及手动输入具有所有必要方法的整个 DatabaseHelper 类,等等。
我一直在尝试找到一种方法,通过提供最少的数据(所需的数据库结构)来自动生成这一切。这应该只需要在一个位置输入一次。我试过将它放在 xml 中,在数组中声明它,也在对象类的代码注释中声明它,但我还没有找到适合我的解决方案。
作为我试图实现的大致目标的示例,我可以提供如下数组来描述我的数据库的所需结构。 NB 带有后缀“Cols”的数组描述了该表中所需的列,后缀“Opts”描述了这些列所需的 sqlite 约束。
static final String[] tables = {"Processes", "Machines", "Suppliers","machinesSuppliersLink"};
static final String[] processesCols = { // tables[0]
"ProcessID" ,
"FullName" ,
"ShortName" ,
"Machines"};
static final String[] processesOpts = {
"INTEGER PRIMARY KEY AUTOINCREMENT" ,
"TEXT" ,
"TEXT" ,
"INTEGER, FOREIGN KEY(Machines) REFERENCES Machines (MachinesID)"};
static final String[][] processes = { processesCols , processesOpts };
static final String[] machinesCols = { // tables[1]
"MachinesID" ,
"Manufacturer" ,
"MachinesName",
"Process"
};
static final String[] machinesOpts = {
"INTEGER PRIMARY KEY AUTOINCREMENT",
"TEXT",
"TEXT",
"INTEGER, FOREIGN KEY(Process) REFERENCES Processes (ProcessID)"
};
static final String[][] machines = { machinesCols , machinesOpts };
static final String[] suppliersCols = { // tables[2]
"SuppliersID",
"SuppliersName",
"SuppliersPhone",
"SuppliersWebsite",
"SuppliersAddress",
};
static final String[] suppliersOpts = {
"INTEGER PRIMARY KEY AUTOINCREMENT",
"TEXT",
"INTEGER",
"TEXT",
"TEXT",
};
static final String[][] suppliers = { suppliersCols , suppliersOpts };
static final String[] machinesSuppliersLinkCols = { // tables[3]
"machinesSuppliersLinkID",
"MachinesID",
"SuppliersID"
};
static final String[] machinesSuppliersLinkOpts = {
"INTEGER PRIMARY KEY AUTOINCREMENT",
"INTEGER, FOREIGN KEY(MachinesID) REFERENCES Machines (MachinesID)",
"INTEGER, FOREIGN KEY(SuppliersID) REFERENCES Suppliers (SuppliersID)",
};
static final String[][] machinesSuppliersLink = { machinesSuppliersLinkCols , machinesSuppliersLinkOpts };
public static final String[][][] schema = { processes , machines , suppliers , machinesSuppliersLink};
有人可以帮助我概述自动生成必要的 DatabaseHelper、类等的步骤吗
非常感谢。
PS 我觉得输入上述数据并为每个表创建一个类会是一个更好的起点,但我觉得这样可以更清楚地说明这一点。
最佳答案
我最近遇到了一个名为 android-activerecord 的项目。它从简单的 java 类生成所有的 sql foo。您可以实例化不同的类并简单地在实例上调用 save()。
关于android - 如何从数据数组(或其他形式)自动创建和填充 android 中的 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077338/