データベースに格納するオブジェクトごとにクラスファイルを手動でコーディングしたり、必要なすべてのメソッドを使用してDatabaseHelperクラス全体を手動で入力したりするなど、多くの不必要な作業が必要になるようです。
私は、最小限のデータ(データベースの必要な構造)を提供することによって、これをすべて自動的に生成する方法を見つけようとしています。これは、1つの場所で1回だけ入力する必要があります。これをxmlに入れて、配列で宣言し、オブジェクトクラスのコードアノテーションでも宣言しようとしましたが、うまくいく解決策が見つかりませんでした。
私が達成しようとしていることの大まかな例として、データベースの目的の構造を説明する配列を次のように提供できます。接尾辞「Cols」が付いたNB配列は、そのテーブルで必要な列を表し、接尾辞「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上記のデータを入力して、テーブルごとにクラスを作成する方が良い出発点になると思いますが、この方法でポイントがより明確に示されると感じました。