#android #database #service
#Android #База данных #Обслуживание
Вопрос:
я создал класс cl_DBHandler
, который расширяется SQLiteOpenHelper
. и я создал класс my_srvc
, который расширяется service
. у меня есть объект m_DBHandler
инициализации класса cl_DBHandler
в службе, но при инициализации объекта я должен передать параметры cl_DBHandler(context, name, factory, version)
, я не понимаю, что именно передать в этом. у меня есть такой проход cl_DBHandler(getappcontext(),"databasename.sqlite",null,1)
2-я вещь: я вызываю одну функцию из класса с помощью m_DBHandler object
, но я получаю значение null object m_DBHandler
при каждом вызове, хотя я должен это object in service
инициализировать. может кто-нибудь сказать мне или помочь мне решить эту проблему.
Заранее спасибо—
Ответ №1:
Используйте следующий конструктор для вашего класса cl_DBHandler
public static final String DATABASE_NAME = "MyDBName.db";
public static final int DATABASE_VERSION = 1;
public cl_DBHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
В вашей службе или деятельности:
cl_DBHandler m_DBHandler = new cl_DBHandler(this);
Затем откройте свою базу данных:
SQLiteDatabase db;
try {
db = m_DBHandler.getWritableDatabase();
} catch (SQLiteException ex) {
db = m_DBHandler.getReadableDatabase();
}
// do anything you like for example:
Cursor cursor = db.rawQuery(strQuery, null);
Комментарии:
1. привет, инициализация объекта in_DBHnadler достаточно ли передать только это функции cl_DBHandler? звучит ошибка
2. На самом деле я уже это сделал, но я получаю исключение с нулевым указателем в m_Handler.
3. в cl_DBHandler я открыл базу данных и создал объект obj для get getreadabledatabase(), также доступный для записи.. так нужно ли снова открывать базу данных отдельно?
4. нет, он открывается после getWritableDatabase или getReadableDatabase
5. да, он открывается после getWritableDatabase ..хорошо, я должен рассказать вам о потоке подробно??