Я слежу за учебником от джентльмена на YouTube под названием Prakeesh, где объясняет, как выполнять операции CRUD в базе данных на Android.Android - Структура класса базы данных OOP
До сих пор у меня есть следующий код, который работает прекрасно:
public class DataHandler {
public static final String NAME = "name";
public static final String TABLE_NAME = "mytable";
public static final String DATABASE_NAME = "mydatabase";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_CREATE = "create table " + TABLE_NAME + " (" + NAME + " text not null);";
SQLiteDatabase database;
DatabaseHelper databaseHelper;
Context context;
public DataHandler(Context context) {
this.context = context;
databaseHelper = new DatabaseHelper(context);
}
public DatabaseHelper open(){
database = databaseHelper.getWritableDatabase();
return databaseHelper;
}
public void close(){
databaseHelper.close();
}
public long insert(String text){
ContentValues contentValues = new ContentValues();
contentValues.put(NAME, text);
return database.insert(TABLE_NAME, null, contentValues);
}
public Cursor returnData(){
return database.query(TABLE_NAME, new String[] {NAME}, null, null, null, null, NAME);
}
// Database Helper Class
private static class DatabaseHelper extends SQLiteOpenHelper{
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL(TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(sqLiteDatabase);
}
}
}
В целом, выше содержит DataHandler
класса, который содержит базу данных Schema
, то есть имя базы данных, мое имя таблицы (только одна таблицы), версия базы данных и т. д. Этот класс содержит методы CRUD
и конструктор, который инициализирует объект DatabaseHelper
.
Объект DatabaseHelper
является внутренним классом, который расширяет SQLiteOpenHelper и переопределяет методы onCreate
и onUpdate
, которые выполняют, как они говорят.
Мой вопрос, наконец, как я реорганизовать и реструктурировать вышеуказанную конструкцию, так что я могу выполнять CRUD
операции, скажем, столика в ресторане или таблицы пользователя? Где сидит DatabaseHelper? Как я могу ссылаться на объект DatabaseHelper внутри каждого объекта? Как я могу легко ввести еще много объектов, которые могут иметь одни и те же операции CRUD?
Ahah. Я надеялся, что меня не привлекут к контент-провайдерам, так как они чрезвычайно тяжелы (для меня) и как в документации Google они заявляют, что они в основном используются для доступа к данным из внешнего проспективного, т. Е. Вне приложения. Думаю, я начну смотреть на него. Знаете ли вы о хорошем/легком для понимания чтении для этого подхода, пожалуйста? – Subby
http://www.tutorialspoint.com/android/android_content_providers.htm - это кажется довольно хорошим. Кроме того, если вы когда-либо хотели внедрить синхронизацию через адаптер синхронизации, для этого вам потребуется поставщик контента для доступа к вашим данным, поэтому, возможно, это не будет плохой инвестицией вовремя, если это когда-либо будет применяться к вам. – simon