Форум программистов, компьютерный форум CyberForum.ru

Подскажите как правильно организовать работу с БД - Android

Восстановить пароль Регистрация
 
xajker
0 / 0 / 0
Регистрация: 05.11.2012
Сообщений: 12
08.03.2014, 21:26     Подскажите как правильно организовать работу с БД #1
Есть класс DBHelper:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class DBHelper extends SQLiteOpenHelper {
 
    public static final String GET_PRICE = "SELECT * from price";
    public static final String GET_CLIENTS = "SELECT _id, realname, adress FROM clients";
    public static final String PRICE_TABLE = "price";
    public static final String CLIENTS_TABLE = "clients";
 
    public DBHelper(Context context) {
        super(context, "dinarCRM", null, 1);
    }
 
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
 
        sqLiteDatabase.execSQL(
//create table
        );
 
        sqLiteDatabase.execSQL(
//create table#2
        );
 
    }
 
}
Есть класс с методами которые выполняют все нужные приложению запросы:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class DBModel {
 
    private DBHelper helper;
    private SQLiteDatabase sqLiteDatabase;
    private Context context;
 
    public DBModel(Context context) {
        this.context = context;
    }
 
    public Cursor getAllClients(){
        helper = new DBHelper(context);
        sqLiteDatabase = helper.getReadableDatabase();
        ...
        //some work
        ...
        return clients;
    }
 
    public Cursor getAllPriceItems(){
        helper = new DBHelper(context);
        sqLiteDatabase = helper.getWritableDatabase();
        Cursor price = sqLiteDatabase.rawQuery(DBHelper.GET_PRICE, null);
        ...
        //some work
        ...
 
        return price;
    }
 
    public void insertClient(ClientItem item){
        helper = new DBHelper(context);
        sqLiteDatabase = helper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        ...
        //some work
        ...
        helper.close();
    }
 
    public void deletePriceItem(String name){
        helper = new DBHelper(context);
        sqLiteDatabase = helper.getWritableDatabase();
        ...
        //some work
        ...
        helper.close();
    }
 
    public void insertPriceItem(PriceItem pi){
        helper = new DBHelper(context);
        sqLiteDatabase = helper.getWritableDatabase();
        ContentValues cv = new ContentValues();
        ...
        //some work
        ...
        helper.close();
    }
 
}
Собственно несколько вопросов по тому как правильно все организовать?
1)Правильно в каждом методе создавать объект класса DBHelper, получать БД, ..., закрывать базу ? Или нужно как-то иначе?
2)Что делать с закрытием курсора, если метод должен его сначала отдать вызывающему?
3)Нужно ли в каждом методе пользоваться методами beginTransaction(), endTransaction() ?

Большое спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 21:26     Подскажите как правильно организовать работу с БД
Посмотрите здесь:

Организовать работу с 4 radioButton Android
Как по уму организовать циклическую работу службы? Android
Android Подскажите как правильно распарсить json
Как организовать фоновую задачу Android
Как организовать сервис? Android
Как лучше организовать напоминалку? Android
Android Подскажите как правильно парсить HTML страницу
Android CustomView как организовать скрол?
Android Подскажите, как организовать свое обучения
Android Как лучше организовать массив String[] из 60 элементов?
Как организовать повторение будильника через setExact()? Android
Android Как правильно организовать переход с одного активити на другое с паролем

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
08.03.2014, 21:50     Подскажите как правильно организовать работу с БД #2
Три беды - одно решение: ContentProvider.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
08.03.2014, 23:27     Подскажите как правильно организовать работу с БД #3
Цитата Сообщение от xajker Посмотреть сообщение
1)Правильно в каждом методе создавать объект класса DBHelper, получать БД, ..., закрывать базу ? Или нужно как-то иначе?
Не надо каждый раз DBHelper создавать. Базу закрывать тоже не надо постоянно. Получать БД от хелпера можно сколько угодно.
Цитата Сообщение от xajker Посмотреть сообщение
2)Что делать с закрытием курсора, если метод должен его сначала отдать вызывающему?
Так пускай вызывающий метод его сам и закрывает когда он ему не нужен больше
Цитата Сообщение от xajker Посмотреть сообщение
3)Нужно ли в каждом методе пользоваться методами beginTransaction(), endTransaction() ?
Если вам нужны транзакции то да разумеется. В противном случае - не нужно.
Yandex
Объявления
08.03.2014, 23:27     Подскажите как правильно организовать работу с БД
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru