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

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

Добавлено: 06 авг 2014, 13:19
altwin
alexmx писал(а):Ну ты то можешь посчитать, а я то нет))) Единственное что я знаю это:
execSQL("ЗАПРОС КАКОЙ НИДЬ"). Ты мне лучше ссылку для вразумления кинь, по запросам sql)))
http://sql.learncodethehardway.org/book/

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

Добавлено: 06 авг 2014, 13:20
altwin
Дмитрий Х. писал(а):А как обстоят дела с Bind - переменными и индексами?
Предусмотрено ли их использование в SQLite?


http://developer.android.com/reference/ ... ement.html


[syntax=java5]
SQLiteDatabase db = dbHelper.getWritableDatabase();

public Cursor fetchByCountryCode(String strCountryCode)
{
/**
* SELECT * FROM Country
* WHERE code = US
*/
return cursor = db.query(true,
"Country", /**< Table name. */
null, /**< All the fields that you want the
cursor to contain; null means all.*/
"code=?", /**< WHERE statement without the WHERE clause. */
new String[] { strCountryCode }, /**< Selection arguments. */
null, null, null, null);
}

/** Fill a cursor with the results. */
Cursor c = fetchByCountryCode("US");

/** Retrieve data from the fields. */
String strCountryCode = c.getString(cursor.getColumnIndex("code"));

/** Assuming that you have a field/column with the name "country_name" */
String strCountryName = c.getString(cursor.getColumnIndex("country_name"));
[/syntax]

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

Добавлено: 12 сен 2014, 14:55
WindStraider
Здравствуйте. Подскажите пожалуйста , как именно формируется выражения WHERE в строке whereClause , при помощи класа SQLiteDatabase метода delete? Что оно должно содержать и чего нельзя туда добавлять? Что оно с себя представляет?

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

db.delete("mytable", "id = " + id, null);
Имя моей таблицы - "mytable"
Выражение WHERE - "id = " + id ( что она из себя представляет и почему именно так записывается , не ясно)
Раздел для замены строки - null

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

Добавлено: 12 сен 2014, 15:28
KamiSempai
Советую изучить SQL, тогда, на подобные вопросы, ответы будут находиться сразу.

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

Добавлено: 12 сен 2014, 15:32
altwin
WindStraider писал(а):Здравствуйте. Подскажите пожалуйста , как именно формируется выражения WHERE в строке whereClause , при помощи класа SQLiteDatabase метода delete? Что оно должно содержать и чего нельзя туда добавлять? Что оно с себя представляет?

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

db.delete("mytable", "id = " + id, null);
Имя моей таблицы - "mytable"
Выражение WHERE - "id = " + id ( что она из себя представляет и почему именно так записывается , не ясно)
Раздел для замены строки - null
ничего сложного тут нет, простой пример:
[syntax=java5]String selectQuery = "SELECT (*) FROM " + TABLE_TODO + " WHERE "
+ KEY_ID + " = " + todo_id;[/syntax]
где все, что в кавычках - строка, остальное строковые переменные.
Выражение WHERE - "id = " + id ( что она из себя представляет и почему именно так записывается , не ясно)
аналогично, строка в которую подставляется переменная. тут вы можете вместо переменной подставлять "?s", а вместо null в третьем аргументе передавать подставляемые значения.

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

Добавлено: 12 сен 2014, 19:49
Foenix
не ?s, а просто ?

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

Добавлено: 13 сен 2014, 02:02
WindStraider
altwin писал(а):
WindStraider писал(а):Здравствуйте. Подскажите пожалуйста , как именно формируется выражения WHERE в строке whereClause , при помощи класа SQLiteDatabase метода delete? Что оно должно содержать и чего нельзя туда добавлять? Что оно с себя представляет?

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

db.delete("mytable", "id = " + id, null);
Имя моей таблицы - "mytable"
Выражение WHERE - "id = " + id ( что она из себя представляет и почему именно так записывается , не ясно)
Раздел для замены строки - null
ничего сложного тут нет, простой пример:
[syntax=java5]String selectQuery = "SELECT (*) FROM " + TABLE_TODO + " WHERE "
+ KEY_ID + " = " + todo_id;[/syntax]
где все, что в кавычках - строка, остальное строковые переменные.
Выражение WHERE - "id = " + id ( что она из себя представляет и почему именно так записывается , не ясно)
аналогично, строка в которую подставляется переменная. тут вы можете вместо переменной подставлять "?s", а вместо null в третьем аргументе передавать подставляемые значения.
То есть вместо строки "id = " можно написать что угодно? Или должны быть соблюдёны некие правила , формирования выражения?

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

db.delete("mytable", "id = " + id, null);
У меня проблема именно с этим кусочком кода , не могу правильно его составить , что бы удалялась одна строка . Вместо этого у меня удаляются все строки.

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

Добавлено: 13 сен 2014, 20:01
WindStraider
Обнаружил что проблема в том что когда я удаляю все строки , а потом добавляю новые , то порядковый номер " ID" новых строк , добавляются по отнашению с удаленными строками. Например :
Шаг 1. мы создали 100 первых строк "hello"
Шаг 2. удалили 100 этих строк "hello"
Шаг 3.добавили новую строку "Thanks"
Но почему то порядковый номер (_ID) строки "Thanks" равен 101 , а не просто 1 .
Как можно сделать что бы порядковый номер , как то обнулялся , или какие могут быть тут варианты ?

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

Добавлено: 13 сен 2014, 20:32
Foenix
можешь сам руководить и заполнять ID, но тогда сам и должен следить за уникальностью. В том, что он идет далее не с 1 нет никакой проблемы.

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

Добавлено: 14 сен 2014, 16:20
WindStraider
Та , всем спасибо кто искрене пытается помоч.

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

Добавлено: 14 сен 2014, 16:22
WindStraider
Foenix писал(а):можешь сам руководить и заполнять ID, но тогда сам и должен следить за уникальностью. В том, что он идет далее не с 1 нет никакой проблемы.
Как так , нет никакой проблемы. А если я исчерпаю 8-байтный счетчик?То есть число идентификаторов его исчерпает? Будет ошибка. Или Вы хотите сказать что я не прав?

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

Добавлено: 14 сен 2014, 21:37
Foenix
это тип long, он идет до 2 в 63й степени. Исчерпаешь?
для тех кому мало, для уникального id есть другие штуки. Но я думаю - что андроид не та вещь, куда стоит записывать-стирать-записывать СТОЛЬКО данных.

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

Добавлено: 14 сен 2014, 21:59
Mini
Foenix писал(а):это тип long, он идет до 2 в 63й степени. Исчерпаешь?
для тех кому мало, для уникального id есть другие штуки. Но я думаю - что андроид не та вещь, куда стоит записывать-стирать-записывать СТОЛЬКО данных.
Верно. Вообще то при переполнении, начинают заполняться удаленные строки. Так что место всегда будет.

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

Добавлено: 14 сен 2014, 22:06
Mini
А как можно идентифицирывать "уникальный идентификатор" по данным которые находятся в колонках?

Ну или как то сделать по этому типу , который удаляет строку , ссылаясь на строковые данные а не "идентификатор"
delete from table where field = 'Loko@mail.ru'
Мне нужно удалить строку , по нажатию кнопки , но при этом не вводить "ID" строки , как указанно у вас в примере

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

Добавлено: 15 сен 2014, 00:00
Foenix
ну а что? так и удаляйте
правда, обычно строки не удаляются по такому условию. Условия сравнения строк чаще используются при поиске, там есть предложение "like", а так же символы % и ? заменяющие несколько или 1 любой символ.
Обязательно так же учитыватЬ, что строки могут быть в разных регистрах, поэтому обычно сравнивают их, переводя в UPPPER CASE. Но с русскими буквами в этом случае проблемы.

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

Добавлено: 15 сен 2014, 01:27
Mini
Foenix писал(а):ну а что? так и удаляйте
правда, обычно строки не удаляются по такому условию. Условия сравнения строк чаще используются при поиске, там есть предложение "like", а так же символы % и ? заменяющие несколько или 1 любой символ.
Обязательно так же учитыватЬ, что строки могут быть в разных регистрах, поэтому обычно сравнивают их, переводя в UPPPER CASE. Но с русскими буквами в этом случае проблемы.
Ой спасибо. Но так не удаляется , выскакивают ошибки.
Может приведете пример ?
А как можно идентифицирывать "уникальный идентификатор" по данным которые находятся в колонках (строки)?
Ответьте на 2 вопроса пожалуйста.

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

Добавлено: 15 сен 2014, 16:01
Foenix
Mini писал(а): Ой спасибо. Но так не удаляется , выскакивают ошибки.
Может приведете пример ?
А как можно идентифицирывать "уникальный идентификатор" по данным которые находятся в колонках (строки)?
Ответьте на 2 вопроса пожалуйста.
пример привести не могу, т.к. не знаю что вы там задумали.
Чтобы понять "выскакивают ошибки" - нужно привести код а так же лог - какие именно ошибки выскакивают, иначе это все будет гадание на кофейной гуще.

Вторую фразу я вообще не поняла - что значит "идентифицировать уникальный идентификатор"? И главное, зачем?

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

Добавлено: 15 сен 2014, 19:36
Mini
Foenix писал(а):
Mini писал(а): Ой спасибо. Но так не удаляется , выскакивают ошибки.
Может приведете пример ?
А как можно идентифицирывать "уникальный идентификатор" по данным которые находятся в колонках (строки)?
Ответьте на 2 вопроса пожалуйста.
пример привести не могу, т.к. не знаю что вы там задумали.
Чтобы понять "выскакивают ошибки" - нужно привести код а так же лог - какие именно ошибки выскакивают, иначе это все будет гадание на кофейной гуще.

Вторую фразу я вообще не поняла - что значит "идентифицировать уникальный идентификатор"? И главное, зачем?
delete from table where field = 'Loko@mail.ru'
Удаляет строку Loko@mail.ru

Вы написали что можно использывать команды SQL в андройде. Но что бы их использывать , недостаточно просто написать эту (delete from table where field = 'Loko@mail.ru' ) строку в компиляторе , что бы её удалить . Необходима обертка , которая даёт доступ к базе.
Так через какой то метод нужно отправлять SQL команды , или как то еще ?
Можите привести пример, удаляния 1 cтроки из You@mail.ru колонки
1 | Son@mail.ru
2 | You@mail.ru
5 | We@@mail.ru
10| our@@mail.ru
Foenix писал(а):
Mini писал(а): Вторую фразу я вообще не поняла - что значит "идентифицировать уникальный идентификатор"? И главное, зачем?
Вы же этому учили на 35 уроке .Смотите. Что бы удалить строку , нужно найти ее уникальный идентификатор :
String id="111";
Mydb.delete(colBase.TABLE_NAME, "_id="+id ,null); удаляем 111 строку

Пример удаления : известно строковое значение строки "Hello", но неизвестно какой у неё "уникальный идентификатор" . Значит нужно тайти по значению строку её "уникальный идентификатор" . Найдя его , строку можно будет удалить используя метод метода delete ,класса SQLiteDatabase.



.

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

Добавлено: 16 сен 2014, 04:56
semiromid
Я буду удалять строку не по "уникальному идентификатору" а по названию колонки , в которой записаны адреса. Допустим она называется "FIELD_NAME"
public static final String FIELD_NAME = "contact_table";
String email="You@mail.ru";
Mydb.delete(colBase.TABLE_NAME, "contact_table = " + "'" + email + "'" ,null);
удаляем "You@mail.ru"

Товарищ, дорогой. Может хватит уже всех хаять при каждом ответе?

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

Добавлено: 27 янв 2015, 01:30
rustech
Правильно понимаю, что строки кода

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

if (id.equalsIgnoreCase("")) {
break;
}
в case R.id.btnUpd: и case R.id.btnDel влияют только на то, что в логах не выводится запись об обновлении или удалении записи? Или там какой-то более глубокий смысл?