すべてがうまくいきます。私はデータベースサイズが増加しているアプリケーションを構築しています。 Increase
をData
,Tables and associated columns
とする。私はModels
をDatabaseHelper
に送る動的な構造を作りましたが、DatabaseHelper
にはinstanceOf
のようなコードを入れてContentValues
とする必要があります。これは私を迷惑にさせている。 Dynamic
は現在、私はしたくないコースのif else if
に入っています。より良いアイデアを得るには、次のコードスニペットを参照してください。SQLiteデータベースアクセスアーキテクチャAndroid
*汎用関数者を挿入するために、それができる教師や学生*
public void insertPersons(ArrayList<Person> persons) {
for(Person person : persons) {
insertOrUpdatePerson(person);
}
}
*これは、instanceofは入れて、私はイライラ作っています。ダイナミクスはどこですか? *
public void insertOrUpdatePerson(Person person) {
if(person instanceof Teacher)
insertOrUpdateTeacher(person);
else {
ClassStudent student = (ClassStudent) person;
insertOrUpdateStudent(student);
}
}
public void insertOrUpdateStudent(ClassStudent student) {
try {
if(student.getPk_id() > 0) {
updateRecord(getWritableDatabase(), TABLE_STUDENT_DATA, createContentValues(student), student);
} else {
int row_id = insertRecord(getWritableDatabase(), TABLE_STUDENT_DATA, createContentValues(student), student);
student.setPk_id(row_id);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void insertOrUpdateTeacher(Person person) {
try {
Teacher teacher = (Teacher) person;
Cursor cursor = getWritableDatabase().rawQuery("SELECT * FROM " + TABLE_TEACHERS + " WHERE " +
teacher_id + " = " + teacher.getPerson_id(), null);
if(cursor != null && cursor.moveToFirst()) {
teacher.setPk_id(cursor.getInt(cursor.getColumnIndexOrThrow(pk_id)));
}
if(teacher.getPk_id() > 0) {
updateRecord(getWritableDatabase(), TABLE_TEACHERS, createContentValues(teacher), teacher);
} else {
int row_id = insertRecord(getWritableDatabase(), TABLE_TEACHERS, createContentValues(teacher), teacher);
teacher.setPk_id(row_id);
}
} catch (Exception e) {
e.printStackTrace();
}
}
*複数のテーブルと、複数のコンテンツ値、コードは私が悪い感じ作っている*
private ContentValues createContentValues(ClassStudent student) {
ContentValues cv = new ContentValues();
cv.put(school_id, student.getSchool_id());
cv.put(student_id, student.getPerson_id());
return cv;
}
private ContentValues createContentValues(Teacher person) {
ContentValues cv = new ContentValues();
cv.put(teacher_id, person.getPerson_id());
cv.put(name, person.getPerson_name());
return cv;
}
このような状況に他の方法かもしれない何?モデルは でcontentValuesを作成する必要がありますか?または、他のアーキテクチャ に従うべきですか? ORMを使用したくありません