2015-08-27 2 views
0

Надеюсь, я не прошу что-то, что имеет прямой ответ во встроенном программировании базы данных. Если да, пожалуйста, направьте меня на ответ, и я закрою этот вопрос.Методы вставки меток рефакторинга в подкласс SQLiteOpenHelper

Мой вопрос следующий: предположим, что у меня есть подкласс SQLiteOpenHelper в моем приложении для Android. Этот подкласс переопределяет соответствующие методы, а также создает базу данных (скажем, database.db), и я хочу, чтобы у нее была некоторая функциональность для вставки вещей в базу данных (т. Е. В каждую таблицу). Как я могу написать эти методы, чтобы было небольшое дублирование кода? Причина, по которой я спрашиваю об этом, заключается в том, что каждый метод вставки выполняет в точности то же самое: получить базу данных для записи, создать объект ContentValues, заполнить его нужными данными и использовать метод insert в SQLiteOpenHelper.

Другой вариант, если я не хочу иметь метод вставки для таблицы, заключается в том, чтобы просто запускать необработанные запросы из ссылки, которую я имею в этом подклассе SQLiteOpenHelper. Честно говоря, ни один из них не является хорошим решением проблемы простого API для вставки/удаления/запроса базы данных через этот класс. Мне бы очень хотелось помочь, спасибо!

ответ

0

Надеюсь, я правильно понял вас. Вам нужно переместить класс SQLiteOpenHelper в другой файл класса и повторно использовать его каждый раз, когда вам нужно открыть свой db, получить запрос или вставить значения?

Если да, я могу предоставить вам ссылки для чтения за рубежом. SO, а также некоторые фрагменты для вас.

Позволяет предположить, у вас есть подкласс

class DBHelper extends SQLiteOpenHelper { 

    public DBHelper(Context context) {...} 

    public void onCreate(SQLiteDatabase db) {...} 

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {...} 

} 

Создание нового класса Java в вашем пакете с именем DBHelper и переместить весь код DBHelper внутри него. Чем, когда вам нужна ссылка на БД в коде, используйте:

public class MainActivity extends AppCompatActivity{ 

    DBHelper dbHelper; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    dbHelper = new DBHelper(this); 
    SQLiteDatabase db = dbHelper.getWritableDatabase(); 

    //rest of your code goes here 

} 

Если вы хотите получить данные из БД без ввода кода для курсора и запросами каждый раз, вы можете пойти и прочитать ответ, предусмотренный OschtärEi (link)

Смежные вопросы