Страница 5 из 9

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 28 окт 2013, 05:15
Rover
У меня в приложении будет несколько Activity, поочередно работающих с базой данных.
Вопрос: когда я подключаюсь к БД в главной Activity, это подключение создается для приложения в целом или только для текущей Activity?
Т.е. надо ли переподключаться при смене Activity, и что происходит с текущим подключением, когда я перемещаюсь между разными активностями?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 ноя 2013, 11:59
Isaev
При создании таблицы через execSQL, если она уже существует, это вежливо сообщается в логе:
INFO/Database(6461): sqlite returned: error code = 1, msg = table newTable already exists
Как бы программно организовать эту проверочку?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 ноя 2013, 13:27
trew
Isaev писал(а):При создании таблицы через execSQL, если она уже существует, это вежливо сообщается в логе:
INFO/Database(6461): sqlite returned: error code = 1, msg = table newTable already exists
Как бы программно организовать эту проверочку?
несколько примеров, которые легко нагуглить.

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 ноя 2013, 18:26
Foenix
Isaev писал(а):При создании таблицы через execSQL, если она уже существует, это вежливо сообщается в логе:
INFO/Database(6461): sqlite returned: error code = 1, msg = table newTable already exists
Как бы программно организовать эту проверочку?
не верь сообщению выше.
http://www.sqlite.org/lang_createtable.html
используй
CREATE TABLE IF NOT EXISTS...........................

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 15 ноя 2013, 12:33
DmitryR
Здравствуйте, я новичок. Вопрос по уроку следующий:
Мы добавили новый edittext ID, куда вписываем ID для записи бд, но код при нажатии кнопки add у нас не поменялся. Т.е. я создаю запись с ID 3, а в базу все равно пишется запись с id 1.(база была пуста) Делаю новую запись с ID 7, но пишет в базу эту запись с Id 2. Однако в уроке создались записи с теми ID, которые были указаны в etID(3 и 4 соответственно). Чем это можно объяснить?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 15 ноя 2013, 12:37
DmitryR
Updt. Кажется я понял, когда мы базу почистили с помощью clear счетчик id не сбросился, поэтому в уроке новые записи начинались с 3 и 4. Я же запустил приложение на другом эмуляторе и база создалась новая. Вопрос, а как сделать так, чтобы новые записи записывались с ID из edittext?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 15 ноя 2013, 12:43
trew
DmitryR писал(а):Updt. Кажется я понял, когда мы базу почистили с помощью clear счетчик id не сбросился, поэтому в уроке новые записи начинались с 3 и 4. Я же запустил приложение на другом эмуляторе и база создалась новая. Вопрос, а как сделать так, чтобы новые записи записывались с ID из edittext?
[syntax=java]db.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "email text" + ");");[/syntax]
autoincrement- говорит о том, что компьютер будет вставлять значения по порядку, в это поле.
Если хотите самостоятельно его заполнять, тогда при создании таблицы нужно написать:
id integer primary key
т.е. без autoincrement

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 15 ноя 2013, 12:47
Foenix
даже если и автоинкремент, все равно можно указывать свои id.
И второе.. иногда лучше на вопрос вовсе не отвечать. ПО-моему, из вопросов как такой следует, что человек просто скопировал код с урока и даже не потрудился вдуматься в то, что там между блоками кода написано.

Не торопитесь, trew. Иной раз вы скорым предложением кода не делаете человеку лучше..

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 17 ноя 2013, 15:18
Mamapapa
Где можно по подробнее прочитать про условия для upgrade?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 17 ноя 2013, 15:20
trew
Mamapapa писал(а):Где можно по подробнее прочитать про условия для upgrade?
Например в уроке 39.

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 дек 2013, 12:22
sae74
Добрый день.
столкнулся с проблемой обновления всех строк в таблице по определенному условию:

Код: Выделить всё

sqlQuery = "UPDATE JURNAL_N SET _id_New_Old= 2 WHERE JURNAL_N._id_New_Old =1";
db.zapros_update(sqlQuery);	
public void zapros_update(String sqlQuery) {
mDB.rawQuery(sqlQuery, null);
}
Сам запрос в редакторе SQL на базе отрабатывает, а на андроиде не чего не происходит, ошибок не выдает.
Где я туплю?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 дек 2013, 12:47
sae74
Я так понимаю что mDB.rawQuery(sqlQuery, null) - возвращает курсор, а что мне тогда нужно использовать?

P.S.

Нужно было просто подумать.......
и использовать mDB.execSQL(sqlQuery);

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 дек 2013, 13:09
Foenix
используй http://developer.android.com/reference/ ... ml#execSQL(java.lang.String, java.lang.Object[])
и вообще разберись с данными, выведи запрос в лог, проведи его на тех же самых данных, что и в устройстве (эмуляторе). Неизвестно что у тебя там происходит.

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 11 дек 2013, 13:21
sae74
Foenix писал(а):используй.......
Сам спросил, сам ответил....
Пост выше.

Нужно было использовать mDB.execSQL(sqlQuery);

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 19:03
alexmx
Доброго времени суток

написал метод удаления строк:

[syntax=java]public int delete(String namedell){
int col;
return col = getWritableDatabase().delete(TIME_TABLE, NUM_DET + "=" + namedell, null);
}[/syntax]

Ругается на синтаксис:
05-06 15:47:06.856: E/AndroidRuntime(739): android.database.sqlite.SQLiteException: near ".182": syntax error (code 1): , while compiling: DELETE FROM tiemtable WHERE numdet=14016.45.182

Это как понять?

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 20:13
Leeroy
alexmx писал(а):Доброго времени суток

написал метод удаления строк:

[syntax=java]public int delete(String namedell){
int col;
return col = getWritableDatabase().delete(TIME_TABLE, NUM_DET + "=" + namedell, null);
}[/syntax]

Ругается на синтаксис:
05-06 15:47:06.856: E/AndroidRuntime(739): android.database.sqlite.SQLiteException: near ".182": syntax error (code 1): , while compiling: DELETE FROM tiemtable WHERE numdet=14016.45.182

Это как понять?
Что-то с форматом namedell
Какой формат у NUM_DET ?

Немного красивший вариант

Код: Выделить всё

public boolean deleteRow(String nameDell) 
{
    db.delete(TIME_TABLE, NUM_DET + "=" + nameDell, null) > 0;
}

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 20:34
Foenix
в кавычках пиши

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 20:46
alexmx
Что-то с форматом namedell
Какой формат у NUM_DET ?
[syntax=java]static final String NUM_DET = "numdet";[/syntax]


В общем задача немного другая: я суммирую строки в запросе и хочу получить количество сложенных строк в группе пошарив ни чего не нашел, вот и решил получать количество через удаление

Тут произвожу операцию:
[syntax=java] int col;
c = db.query();
while (c.moveToNext()) {
idname = c.getInt(c.getColumnIndex(TIME_ID));
name = c.getString(c.getColumnIndex(NUM_DET));
sG0 = c.getDouble(c.getColumnIndex(COMMAND_G0));
sG1 = c.getDouble(c.getColumnIndex(COMMAND_G1));
sG1v = c.getDouble(c.getColumnIndex(COMMAND_G1_V));
sG1n = c.getDouble(c.getColumnIndex(COMMAND_G1_N));
sG94 = c.getDouble(c.getColumnIndex(COMMAND_G94));
sG23 = c.getDouble(c.getColumnIndex(COMMAND_G23));
sG23v = c.getDouble(c.getColumnIndex(COMMAND_G23_V));
sG23n = c.getDouble(c.getColumnIndex(COMMAND_G23_N));
System.out.println(name + " " + sG0 + " " + sG1 + " " + sG94 + " " + sG23);

col = db.delete(name);
System.out.println("delete");
}[/syntax]

Метод суммирующего запроса:
[syntax=java]public Cursor query(){
columns = new String[]{"_id", "numdet", "sum(g0) as g0", "sum(g1) as g1", "sum(g1v) as g1v",
"sum(g1n) as g1n", "sum(g94) as g94", "sum(g23) as g23", "sum(g23v) as g23v", "sum(g23n) as g23n"};
groupBy = "numdet";
return getWritableDatabase().query(TIME_TABLE, columns, null, null, groupBy, null, null);
}[/syntax]
Метод отдающего количество строк:
[syntax=java]public int delete(String namedell){
int col;
return col = getWritableDatabase().delete(TIME_TABLE, NUM_DET + "=" + namedell, null);
}[/syntax]

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 21:03
Foenix
ничего не поняла. Что ты удаляешь??

Re: Урок 35. SQLite. Методы update и delete с указанием усло

Добавлено: 06 май 2014, 21:23
alexmx
я удаляю строки содержащие одинаковое значение поля NUM_DET
значение этого поля переменная namedell