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

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

Войти
Регистрация
Восстановить пароль
 
Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
#1

SQlite Insert, delete, update - Программирование Android

25.06.2016, 10:13. Просмотров 210. Ответов 3

Добрый день.
Возник такой вопрос.
Есть база с таблицей MailSettings. Она пустая. При первом сохранении настроек, все понятно (Insert).

В этой таблице всегда должен быть один ряд:
ID = 1, user = some_user, sender = some_sender, pass = some_pass, smtp = some_smtp, port = some_port, receiver = some_receiver

Как реализовать в одном методе и создание и перезапись единственной записи?

Мой костыль выглядит так:
onCreate

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    @Override
    public void onCreate(SQLiteDatabase db) {
 
        db.execSQL("CREATE TABLE IF NOT EXISTS MailSettings (" +
                "id INTEGER NOT NULL PRIMARY KEY," +
                "user TEXT," +
                "sender TEXT," +
                "pass TEXT," +
                "smtp TEXT," +
                "port TEXT," +
                "receiver TEXT);"
        );
 
    }

Загрузка настроек почты

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
    public String[] loadMailSettings() {
        String[] result = new String[6];
 
        SQLiteDatabase sqLiteDatabase = getReadableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM MailSettings", null);
 
        if (cursor.moveToFirst()) {
            int userColIndex = cursor.getColumnIndex("user");
            int senderColIndex = cursor.getColumnIndex("sender");
            int passColIndex = cursor.getColumnIndex("pass");
            int smtpColIndex = cursor.getColumnIndex("smtp");
            int portColIndex = cursor.getColumnIndex("port");
            int receiverColIndex = cursor.getColumnIndex("receiver");
            do {
                result[0] = cursor.getString(userColIndex);
                result[1] = cursor.getString(senderColIndex);
                result[2] = cursor.getString(passColIndex);
                result[3] = cursor.getString(smtpColIndex);
                result[4] = cursor.getString(portColIndex);
                result[5] = cursor.getString(receiverColIndex);
            } while (cursor.moveToNext());
 
        }
        cursor.close();
        sqLiteDatabase.close();
        return result;
    }

Сохранение настроек почты

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    public void saveMailSettings(String[] settings) {
        SQLiteDatabase sqLiteDatabase = getWritableDatabase();
 
        sqLiteDatabase.delete("MailSettings", null, null);
 
        contentValues.put("user", settings[0]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
        contentValues.put("sender", settings[1]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
        contentValues.put("pass", settings[2]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
        contentValues.put("smtp", settings[3]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
        contentValues.put("port", settings[4]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
        contentValues.put("receiver", settings[5]);
        sqLiteDatabase.insert("MailSettings", null, contentValues);
 
        sqLiteDatabase.close();
    }

Хоть так и работает, но все же можно ли как-то сократить код (навести красоту), убрать циклы четения (если возможно) и.т.д.

Если заменить insert на update по ID, будет ругаться. и это понятно, потому что изначально нет в таблице ничего.
А делать дополнительную проверку, пустая таблица или нет, будет только усложнять код.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2016, 10:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос SQlite Insert, delete, update (Программирование Android):

SQLite как получить номер записи из INSERT - Программирование Android
Собственно САБЖ. Не знаю команды. Уже все перерыл! :( Есть база с id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT Добавляю новую запись и...

Insert, Update, Delete - C#
господа, проблема! реализовал удаление (Delete) что то примерно такое DataGridView.Rows.RemoveAt(i); OleDbCommand DeleteCommand...

Insert,update,delete - PHP БД
Добрый вечер. Есть такой вот класс <?php class GoodsClass { public function getGoodsList(){ $mysqli = new...

INSERT DELETE UPDATE - MySQL
Стоит ли блокировать таблицы при вставке допустим в базу новых записей. Может возникнуть такая ситуация что в одну и ту же секунду будет...

Insert, delete, update - PostgreSQL
Доброго времени суток. Возник такой вопрос - как правильно производить операции вставки, удаления и обновления таблицы. Пишу программу...

Запросы с INSERT, UPDATE, DELETE - Базы данных
Помогите пожалуйста составить запросы на команды с INSERT, UPDATE, DELETE Таблица 1 - Predlozhenie Таблица2 - Zaiavka Столбци...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
25.06.2016, 17:00 #2
создай одной строкой json, и сохраняй ее с помощью SharedPreferences
0
Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
25.06.2016, 17:05  [ТС] #3
Цитата Сообщение от Frozik6k Посмотреть сообщение
сохраняй ее с помощью SharedPreferences
Я уже так делал. Решил все таки хранить все в БД.
Ну раз причесать код не удается. Пусть будет, как есть. И так работает.
0
XRoy
852 / 702 / 217
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
25.06.2016, 19:14 #4
Dark-VIN,
SQL
1
INSERT OR REPLACE INTO ...
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2016, 19:14
Привет! Вот еще темы с ответами:

UPDATE vs DELETE & INSERT - Базы данных
Есть таблица с несколькими полями, без первичного ключа. По ходу задачи необходимо обновлять некоторые поля в строке таблицы. т.к....

Множественный update, delete, insert - PHP БД
Здравствуйте, возник довольно теоретический вопрос. Есть 2 таблицы, данные из первой таблицы содержат поле которое указывает на действия, с...

Операторы INSERT, UPDATE, DELETE - Delphi БД
Добрый вечер,в общем мне надо управлять данными в таблицах, используя, операторы INSERT, UPDATE, DELETE. А как это сделать я не...

Триггер на INSERT, UPDATE, DELETE - Firebird/InterBase
В таблице «Авторы» создать поле количество книг. Создать триггеры для таблицы «АвторыКниги», автоматически изменяющие значение созданного...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.06.2016, 19:14
Ответ Создать тему
Опции темы

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