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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
sausagerus
226 / 3 / 0
Регистрация: 12.07.2014
Сообщений: 51
#1

SQLiteDatabase как обновить таблицы? - Android

17.05.2016, 18:15. Просмотров 63. Ответов 1
Метки нет (Все метки)

Привет, снова я )) Данные в базу закачиваются из других классов, то есть всё работает, но только если по отдельности открывать активити...
Пример: я открываю вкладку "адреса" и в таблицу "адреса" сохраняются данные, затем открываю "продукты" и в таблицу "продукты" скачиваю данные с json.
Нужно сделать так, чтобы в активити "настройки" по нажатию кнопки, обновлялись обе таблицы сразу либо же заполнялись заного, если их нет.
Как обновить несколько таблиц сразу в одной БД ?
Вот что есть:
Класс Database Handler к нему имеется соответствующий Listener.
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
package de.magnum_gmbh.mw;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
 
import java.util.ArrayList;
 
/**
 * Created by vklamm on 20.04.2016.
 */
public class DBHandler extends SQLiteOpenHelper implements DBListener {
 
    private static final int DB_VERSION = 2;
    private static final String DB_NAME = "AddressesDB.db";
 
    //Addresses
    private static final String TABLE_NAME_ADDRESSES = "addresses_table";
    private static final String KEY_ID_ADDRESSES = "_id";
    private static final String KEY_NAME1_ADDRESSES = "_name1";
    private static final String KEY_NAME2_ADDRESSES = "_name2";
    private static final String KEY_NAME3_ADDRESSES = "_name3";
    private static final String KEY_NUMBER_ADDRESSES = "_number";
    private static final String KEY_STREET_ADDRESSES = "_street";
    private static final String KEY_INDEX_ADDRESSES = "_index";
    private static final String KEY_CITY_ADDRESSES = "_city";
    private static final String KEY_COUNTRY_ADDRESSES = "_country";
    private static final String KEY_PHONE_ADDRESSES = "_phone";
    private static final String KEY_PHONE2_ADDRESSES = "_phone2";
    private static final String KEY_FAX_ADDRESSES = "_fax";
    private static final String KEY_EMAIL_ADDRESSES = "_email";
    private static final String KEY_EMAIL2_ADDRESSES = "_email2";
 
    //Articles
    private static final String TABLE_NAME_ARTICLES = "articles_table";
    private static final String KEY_ID_ARTICLES = "_id";
    private static final String KEY_ARTICLE_NUMBER_ARTICLES = "_article_number";
    private static final String KEY_SEQUENCE_NUMBER_ARTICLES = "_sequence_number";
    private static final String KEY_WINE_NUMBER_ARTICLES = "_wine_number";
    private static final String KEY_OFFICIAL_APPROVAL_NUMBER_ARTICLES = "_official_approval_number";
    private static final String KEY_ARTICLE_SALES_DESIGNATION_ARTICLES = "_article_sales_designation";
    private static final String KEY_VINTAGE_ARTICLES = "_vintage";
    private static final String KEY_STOCK_ARTICLES = "_stock";
    private static final String KEY_RESERVED_ARTICLES = "_reserved";
    private static final String KEY_FREE_ARTICLES = "_free";
    private static final String KEY_GRAPE_VARIETY_ARTICLES = "_grape_variety";
    private static final String KEY_QUALITY_LEVEL_ARTICLES = "_quality_level";
    private static final String KEY_VINE_LOCATION_ARTICLES = "_vine_location";
 
    private SQLiteDatabase db;
 
 
 
    //Addresses
    String CREATE_TABLE_ADDRESSES = "CREATE TABLE " + TABLE_NAME_ADDRESSES + " ("
            + KEY_ID_ADDRESSES + " INTEGER PRIMARY KEY, " + KEY_NAME1_ADDRESSES + " TEXT, "
            + KEY_NAME2_ADDRESSES + " TEXT, " + KEY_NAME3_ADDRESSES + " TEXT, "+ KEY_NUMBER_ADDRESSES + " TEXT, "
            + KEY_STREET_ADDRESSES + " TEXT, " + KEY_INDEX_ADDRESSES + " TEXT, " + KEY_CITY_ADDRESSES + " TEXT, "
            + KEY_COUNTRY_ADDRESSES + " TEXT, " + KEY_PHONE_ADDRESSES + " TEXT, " + KEY_PHONE2_ADDRESSES + " TEXT, "
            + KEY_FAX_ADDRESSES + " TEXT, " + KEY_EMAIL_ADDRESSES + " TEXT, " + KEY_EMAIL2_ADDRESSES + " TEXT)";
 
    //Addresses
    String DROP_TABLE_ADDRESSES = "DROP TABLE IF EXISTS " + TABLE_NAME_ADDRESSES;
 
    //Articles
    String CREATE_TABLE_ARTICLES = "CREATE TABLE " + TABLE_NAME_ARTICLES + " ("
            + KEY_ID_ARTICLES + " INTEGER PRIMARY KEY, " + KEY_ARTICLE_NUMBER_ARTICLES + " TEXT, "
            + KEY_SEQUENCE_NUMBER_ARTICLES + " TEXT, " + KEY_WINE_NUMBER_ARTICLES + " TEXT, "
            + KEY_OFFICIAL_APPROVAL_NUMBER_ARTICLES + " TEXT, " + KEY_ARTICLE_SALES_DESIGNATION_ARTICLES + " TEXT, "
            + KEY_VINTAGE_ARTICLES + " TEXT, " + KEY_STOCK_ARTICLES + " TEXT, " + KEY_RESERVED_ARTICLES + " TEXT, "
            + KEY_FREE_ARTICLES + " TEXT, " + KEY_GRAPE_VARIETY_ARTICLES + " TEXT, "
            + KEY_QUALITY_LEVEL_ARTICLES + " TEXT," + KEY_VINE_LOCATION_ARTICLES + " TEXT)";
 
    //Articles
    String DROP_TABLE_ARTICLES = "DROP TABLE IF EXISTS " + TABLE_NAME_ARTICLES;
 
  
    //Addresses
    @Override
    public void addAddress(Address address) {
        SQLiteDatabase db = this.getWritableDatabase();
        try{
            ContentValues values = new ContentValues();
            values.put(KEY_NAME1_ADDRESSES, address.getName1());
            values.put(KEY_NAME2_ADDRESSES, address.getName2());
            values.put(KEY_NAME3_ADDRESSES, address.getName3());
            values.put(KEY_NUMBER_ADDRESSES, address.getNumber());
            values.put(KEY_STREET_ADDRESSES, address.getStreet());
            values.put(KEY_INDEX_ADDRESSES, address.getIndex());
            values.put(KEY_CITY_ADDRESSES, address.getCity());
            values.put(KEY_COUNTRY_ADDRESSES, address.getCountry());
            values.put(KEY_PHONE_ADDRESSES, address.getPhone());
            values.put(KEY_PHONE2_ADDRESSES, address.getPhone2());
            values.put(KEY_FAX_ADDRESSES, address.getFax());
            values.put(KEY_EMAIL_ADDRESSES, address.getEmail());
            values.put(KEY_EMAIL2_ADDRESSES, address.getEmail2());
 
            db.insert(TABLE_NAME_ADDRESSES, null, values);
            db.close();
        }catch (Exception e){
            Log.e("problem" , e+ "");
        }
    }
 
    //Articles
    @Override
    public void addArticle(Article article){
        SQLiteDatabase db = this.getWritableDatabase();
        try{
            ContentValues values = new ContentValues();
            values.put(KEY_ARTICLE_NUMBER_ARTICLES, article.getArticle_number());
            values.put(KEY_SEQUENCE_NUMBER_ARTICLES, article.getSequence_number());
            values.put(KEY_WINE_NUMBER_ARTICLES, article.getWine_number());
            values.put(KEY_OFFICIAL_APPROVAL_NUMBER_ARTICLES, article.getOfficial_approval_number());
            values.put(KEY_ARTICLE_SALES_DESIGNATION_ARTICLES, article.getArticle_sales_designation());
            values.put(KEY_VINTAGE_ARTICLES, article.getVintage());
            values.put(KEY_STOCK_ARTICLES, article.getStock());
            values.put(KEY_RESERVED_ARTICLES, article.getReserved());
            values.put(KEY_FREE_ARTICLES, article.getFree());
            values.put(KEY_GRAPE_VARIETY_ARTICLES, article.getGrape_variety());
            values.put(KEY_QUALITY_LEVEL_ARTICLES, article.getQuality_level());
            values.put(KEY_VINE_LOCATION_ARTICLES, article.getVine_location());
 
            db.insert(TABLE_NAME_ARTICLES, null, values);
            db.close();
        }catch (Exception e){
            Log.e("article problem", e+ "");
        }
    }
 
    //Addresses
    @Override
    public ArrayList<Address> getAllAddresses() {
        SQLiteDatabase db = this.getReadableDatabase();
        ArrayList<Address> addressList = null;
        try{
            addressList = new ArrayList<Address>();
            String QUERY = "SELECT * FROM " + TABLE_NAME_ADDRESSES;
            Cursor cursor = db.rawQuery(QUERY, null);
            if(!cursor.isLast()){
                while(cursor.moveToNext()){
                    Address address = new Address();
                    address.setId(cursor.getInt(0));
                    address.setName1(cursor.getString(1));
                    address.setName2(cursor.getString(2));
                    address.setName3(cursor.getString(3));
                    address.setNumber(cursor.getString(4));
                    address.setStreet(cursor.getString(5));
                    address.setIndex(cursor.getString(6));
                    address.setCity(cursor.getString(7));
                    address.setCountry(cursor.getString(8));
                    address.setPhone(cursor.getString(9));
                    address.setPhone2(cursor.getString(10));
                    address.setFax(cursor.getString(11));
                    address.setEmail(cursor.getString(12));
                    address.setEmail2(cursor.getString(13));
 
                    addressList.add(address);
                }
            }
            db.close();
        }catch (Exception e){
            Log.e("error" , e+"");
        }
        return addressList;
    }
 
    //Articles
    @Override
    public ArrayList<Article> getAllArticles() {
        SQLiteDatabase db = this.getReadableDatabase();
        ArrayList<Article> articleList = null;
        try{
            articleList = new ArrayList<Article>();
            String QUERY = "SELECT * FROM " + TABLE_NAME_ARTICLES;
            Cursor cursor = db.rawQuery(QUERY, null);
            if (!cursor.isLast()){
                while(cursor.moveToNext()){
                    Article article = new Article();
                    article.setId(cursor.getInt(0));
                    article.setArticle_number(cursor.getString(1));
                    article.setSequence_number(cursor.getString(2));
                    article.setWine_number(cursor.getString(3));
                    article.setOfficial_approval_number(cursor.getString(4));
                    article.setArticle_sales_designation(cursor.getString(5));
                    article.setVintage(cursor.getString(6));
                    article.setStock(cursor.getString(7));
                    article.setReserved(cursor.getString(8));
                    article.setFree(cursor.getString(9));
                    article.setGrape_variety(cursor.getString(10));
                    article.setQuality_level(cursor.getString(11));
                    article.setVine_location(cursor.getString(12));
 
                    articleList.add(article);
                }
            }
            db.close();
        }catch (Exception e){
            Log.e("article error", e+ "");
        }
        return articleList;
    }
 
 
    //Addresses
    @Override
    public int getAddressCount() {
        int num = 0;
        SQLiteDatabase db = this.getReadableDatabase();
        try{
            String QUERY = "SELECT * FROM " + TABLE_NAME_ADDRESSES;
            Cursor cursor = db.rawQuery(QUERY, null);
            num = cursor.getCount();
            db.close();
            return num;
        }catch (Exception e){
            Log.e("error" ,e+"");
        }
        return 0;
    }
 
 
    //Articles
    @Override
    public int getArticleCount() {
        int num = 0;
        SQLiteDatabase db = this.getReadableDatabase();
        try{
            String QUERY = "SELECT * FROM " + TABLE_NAME_ARTICLES;
            Cursor cursor = db.rawQuery(QUERY, null);
            num = cursor.getCount();
            db.close();
            return num;
        }catch (Exception e){
            Log.e("article error" ,e+"");
        }
        return 0;
    }
 
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_ADDRESSES);
        db.execSQL(CREATE_TABLE_ARTICLES);
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(DROP_TABLE_ADDRESSES);
        db.execSQL(DROP_TABLE_ARTICLES);
        onCreate(db);
    }
 
    public DBHandler(Context context){
        super(context, DB_NAME, null, DB_VERSION);
    }
 
 
}

вызываю этот класс
Java
1
2
SQLiteDatabase db;
DBHandler handler.onCreate(db);
и вылетает ошибка
E/AndroidRuntime: FATAL EXCEPTION: main
android.database.sqlite.SQLiteException: table addresses_table already exists (code 1): , while compiling: CREATE TABLE addresses_table
Если в CREATE TABLE дописать IF NOT EXISTS то ошибка уходит, но и ничего не происходит таблицы не обновляются и не создаются заного...
Need help!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 18:15     SQLiteDatabase как обновить таблицы?
Посмотрите здесь:

Передача SQLiteDatabase из namespace Android
Как обновить приложение в play.google.com? Android
Android Как обновить TextView с AsyncTask?
Как обновить значение в ячейке, используя условие? Android
Android Как минусоват данные с таблицы 2 от таблицы 1
Как обновить viewpager или listfragment? Android
Android Как обновить одно поле в таблице SQLite Android
Android SQLiteDatabase, составление запроса для сортировки типа дерево
Android Как обновить список RecyclerView после добавления item?
Android Работа с SQLiteDatabase
Как обновить БД пользователей приложения Android
Android Как обновить textview в фрагменте после обновления preference

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sausagerus
226 / 3 / 0
Регистрация: 12.07.2014
Сообщений: 51
19.05.2016, 15:14  [ТС]     SQLiteDatabase как обновить таблицы? #2
Ни у кого нету примера ?
Yandex
Объявления
19.05.2016, 15:14     SQLiteDatabase как обновить таблицы?
Ответ Создать тему
Опции темы

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