Определение идентификатора
-
WindStraider
- Сообщения: 9
- Зарегистрирован: 10 сен 2014, 15:28
Определение идентификатора
Здравствуйте. Подскажите пожалуйста.
У меня есть таблица с одной колонкой где написаны имена людей.
----------------
1 Мила
12 Лима
56 Лола
78 Кора
----------------
Тут показан уникальный идентификатор каждой записи.
Как програма может узнать значение уникального идентификатора , по определённому имени.
Например пользователь выбрал "Лола". Дальше нужно как то оперделить ее уникальный идентификатор для дальнейшей работы с этой строкой.
Help me please.
У меня есть таблица с одной колонкой где написаны имена людей.
----------------
1 Мила
12 Лима
56 Лола
78 Кора
----------------
Тут показан уникальный идентификатор каждой записи.
Как програма может узнать значение уникального идентификатора , по определённому имени.
Например пользователь выбрал "Лола". Дальше нужно как то оперделить ее уникальный идентификатор для дальнейшей работы с этой строкой.
Help me please.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Определение идентификатора
В вашем случае, надо вытаскивать с вашей строки нужный вам идентификатор, например по пробелу. Т.е. берете строку
String[] parts = yourString.split(" ");
String identificator = parts[0];
вот весь код. Вы разделяете строку на части по пробелы, получаете массив.
Но это неправильный подход, создайте базу и сделайте отдельно поле для id И поле для имён.
String[] parts = yourString.split(" ");
String identificator = parts[0];
вот весь код. Вы разделяете строку на части по пробелы, получаете массив.
Но это неправильный подход, создайте базу и сделайте отдельно поле для id И поле для имён.
-
WindStraider
- Сообщения: 9
- Зарегистрирован: 10 сен 2014, 15:28
Re: Определение идентификатора
Я привел пример исходя из табици в базе SQlite. Эта база содержит в себе одну строку , для содержания имен. И уникальные идентификаторы для каждой строки , сформированные "INTEGER PRIMARY KEY AUTOINCREMENT".Mikhail_dev писал(а):В вашем случае, надо вытаскивать с вашей строки нужный вам идентификатор, например по пробелу. Т.е. берете строку
String[] parts = yourString.split(" ");
String identificator = parts[0];
вот весь код. Вы разделяете строку на части по пробелы, получаете массив.
Но это неправильный подход, создайте базу и сделайте отдельно поле для id И поле для имён.
Для того что бы мне удалить определённую строку , мне нужен "уникальный идентификатор" данной строки .
String SaySee3; //Тут должен быть записан уникальный идентификатор строки , которую мы собираемся удалить.
Log.i("Удаляем строку с идентификатором - ",SaySee3); //Выводи лог
sqdb.delete(myBase.TABLE_NAME, myBase._ID + " = " + SaySee3, null); //Удаляем строку
Что бы удалить строку , нужно как то узнать её "уникальный идентиикатор". Допустим нам нужно удалить строку с записью "Лола" , но мы не знаем" уникальный идентификатор" этой строки. Как можно узнать
"уникальный идентификатор" , по содержанию текстовой информацыи в строке?
Re: Определение идентификатора
А чем вам не подходит? db.delete("TABLE_NAME", "COLUMN" + " = " + some_data + "", null);
Не обязательно привязываться к _id
З.Ы.
Хотя костыль конечно..
Не обязательно привязываться к _id
З.Ы.
Хотя костыль конечно..
Re: Определение идентификатора
Если имена уникальные - 'SELECT _id FROM mytable WHERE name=Лола' отдаст то, что нужно по имени. Можно выводить данные не из массива а из хэша, где ключем будет _id уже полученный и всегда известный.WindStraider писал(а):Здравствуйте. Подскажите пожалуйста.
У меня есть таблица с одной колонкой где написаны имена людей.
----------------
1 Мила
12 Лима
56 Лола
78 Кора
----------------
Тут показан уникальный идентификатор каждой записи.
Как програма может узнать значение уникального идентификатора , по определённому имени.
Например пользователь выбрал "Лола". Дальше нужно как то оперделить ее уникальный идентификатор для дальнейшей работы с этой строкой.
Help me please.
P.S. в любом случае лучше добавлять дополнительный ключ, к примеру email, уникальный для каждой записи.

Re: Определение идентификатора
Не слушай никого, они тебя путают и говорят не то.WindStraider писал(а):Здравствуйте. Подскажите пожалуйста.
У меня есть таблица с одной колонкой где написаны имена людей.
----------------
1 Мила
12 Лима
56 Лола
78 Кора
----------------
Тут показан уникальный идентификатор каждой записи.
Как програма может узнать значение уникального идентификатора , по определённому имени.
Например пользователь выбрал "Лола". Дальше нужно как то оперделить ее уникальный идентификатор для дальнейшей работы с этой строкой.
Help me please.
Вот смотри.
У тебя есть таблица с двумя колонками, которые ты описал совершенно правильно. Я не знаю что именно ты делашь в программе, но допустим у тебя на экране список этих имен находится в листвью. Ты делаешь этот список на экран при помощи курсорадаптера, так? Так. Ты в этот курсор предварительно должен взять не только имена, но и _id!!
Теперь, тебе нужно удалить ту строчку, на которую кликнул юзер.
Ты пишешь обработку клика данной строки, но из адаптера (курсора) вытаскиваешь вовсе не имя , а _id!!! И в этом обработчике отправляешь команду в бд - удалить строку по ее _id так, как описано в уроках (например). Ни в коем случае удалять по имени или другим штукам нельзя! для этого и придумали уникальный айди, чтоб его везде тащить и везде по нему однозначно определять строку.
Точно так же, если юзер захотел поменять лену на катю и ткнул в лену, тебе вообще пофиг, что там лена была, тебе главное взять из курсора айди записи, куда он ткнул и сделать ей update. Надеюсь, понятно?
код примерно такой
[syntax=java5]MyListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Cursor cursor = lstAdapter.getCursor();
cursor.moveToPosition(position);
int _id = cursor.getInt(cursor.getColumnIndex("_id"));
И ТУТ УДАЛЯЕШЬ ПО ПОЛУЧЕННОМУ _id...............................................................................
}
}
[/syntax]
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
Артем вообще меня убил!


R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
В чем разница между моим ответом и твоими подробностями я пока не понял, поскольку именно о выборе id я и говорил, но судя по выражению глаз у котэ - все окFoenix писал(а):Артем вообще меня убил!

Re: Определение идентификатора
мало что поняла, честно говоря, начиная со слов "неявные" 
А что такое неявный запрос?
А что такое неявный запрос?
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
не обращай внимание, это у меня от оракловских неявных курсоров осталось, суть в том, что работа с базой тут происходит за кадром, а это плохо, потому как в каждом случае запросы выполняются по разному и написав их руками ты 101% сделаешь лучше.Foenix писал(а):мало что поняла, честно говоря, начиная со слов "неявные"
А что такое неявный запрос?

Re: Определение идентификатора
я не поняла связи вообще
я всегда пишу запросы руками
ты автора топика не путай, а то ведь он будет пытаться понять, что ты сказал - там до зависания недалеко
я всегда пишу запросы руками
ты автора топика не путай, а то ведь он будет пытаться понять, что ты сказал - там до зависания недалеко
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
Просто мне не нравится курсор. И вообще весь google, ну вот в данном случае, нафига им был нужен этот курсор если есть уже много лет - http://docs.oracle.com/javase/8/docs/ap ... l/Set.htmlFoenix писал(а):я не поняла связи вообще
я всегда пишу запросы руками
ты автора топика не путай, а то ведь он будет пытаться понять, что ты сказал - там до зависания недалеко

Re: Определение идентификатора
Интересно, автор определил свой идентификатор? 
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
Он понял, что есть ли жизнь на марсе - вопрос не существенный, колличество звезд - решающий фактор.Foenix писал(а):Интересно, автор определил свой идентификатор?

Re: Определение идентификатора
столкнулся с такой же проблемой, ListView заполняется из SQL базы
когда кликаю по строке ListView - из SQl должна удалиться строка, но как узнать идентификатор SQL?
понял что надо передать ID в адаптер и считывать его при клике по строке, но не понимаю как это сделать
сейчас сделано вот так
когда кликаю по строке ListView - из SQl должна удалиться строка, но как узнать идентификатор SQL?
понял что надо передать ID в адаптер и считывать его при клике по строке, но не понимаю как это сделать
сейчас сделано вот так
Код: Выделить всё
ArrayList<HashMap<String, Object>> curList = new ArrayList<HashMap<String, Object>>();
HashMap<String, Object> hm;
..................
Cursor cursor = SQLWorkDB.GetCursor(nameDB, null, null, null, null, null, null);
..................
while (cursor.moveToNext()){
int id = cursor.getInt(cursor.getColumnIndex(SQLWorkDB.c_tMain_ID));
t1= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test1));
t2= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test2));
t3= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test3));
hm = new HashMap<String, Object>();
hm.put("t1",t1);
hm.put("t2",t2);
hm.put("t3",t3);
curList.add(hm);
}
cursor.close();
// создаем адаптер
final MySimpleAdapter sAdapter = new MySimpleAdapter(this, curList, R.layout.lv_main, new String[] {"t1", "t2", "t3"},
new int[] { R.id.tv_lv_main_test1, R.id.tv_lv_main_test2, R.id.tv_lv_main_test3});
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Определение идентификатора
Вы делаете лишнюю работу переписывая Cursor в список HashMap. Используйте SimpleCursorAdapter. http://startandroid.ru/ru/uroki/vse-uro ... anija.htmlgrem17 писал(а):столкнулся с такой же проблемой, ListView заполняется из SQL базы
когда кликаю по строке ListView - из SQl должна удалиться строка, но как узнать идентификатор SQL?
понял что надо передать ID в адаптер и считывать его при клике по строке, но не понимаю как это сделать
сейчас сделано вот такКод: Выделить всё
ArrayList<HashMap<String, Object>> curList = new ArrayList<HashMap<String, Object>>(); HashMap<String, Object> hm; .................. Cursor cursor = SQLWorkDB.GetCursor(nameDB, null, null, null, null, null, null); .................. while (cursor.moveToNext()){ int id = cursor.getInt(cursor.getColumnIndex(SQLWorkDB.c_tMain_ID)); t1= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test1)); t2= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test2)); t3= cursor.getString(cursor.getColumnIndex(SQLWorkDB.c_tMain_test3)); hm = new HashMap<String, Object>(); hm.put("t1",t1); hm.put("t2",t2); hm.put("t3",t3); curList.add(hm); } cursor.close(); // создаем адаптер final MySimpleAdapter sAdapter = new MySimpleAdapter(this, curList, R.layout.lv_main, new String[] {"t1", "t2", "t3"}, new int[] { R.id.tv_lv_main_test1, R.id.tv_lv_main_test2, R.id.tv_lv_main_test3});
И еще, судя по приведенному коду, у вас в список не попадает первый элемент массива. Курсоры лучше перебирать так:
[syntax=java5]if(cursor.moveToFirst()) do {
// Делаем что-то со строкой
} while (cursor.moveToNext());[/syntax]
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Определение идентификатора
я не понимаю - что именно в моих объяснениях было не понятно?grem17 писал(а):столкнулся с такой же проблемой, ListView заполняется из SQL базы
когда кликаю по строке ListView - из SQl должна удалиться строка, но как узнать идентификатор SQL?
понял что надо передать ID в адаптер и считывать его при клике по строке, но не понимаю как это сделать
сейчас сделано вот так
вы делаете по-своему и не понимаете сами себя.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Определение идентификатора
все, разобрался, получилось, спасибоFoenix писал(а):я не понимаю - что именно в моих объяснениях было не понятно?grem17 писал(а):столкнулся с такой же проблемой, ListView заполняется из SQL базы
когда кликаю по строке ListView - из SQl должна удалиться строка, но как узнать идентификатор SQL?
понял что надо передать ID в адаптер и считывать его при клике по строке, но не понимаю как это сделать
сейчас сделано вот так
вы делаете по-своему и не понимаете сами себя.
почему то думал что после выборки в курсор все эти данные надо обязательно сопоставить с адаптером...
перечитал ваше сообщение еще на несколько раз и понял что работаем то мы в дальнейшем не с адаптером, а напрямую с курсором
Re: Определение идентификатора
да, разберитесь в архитектуре приложения. я ее тоже описывала - вьюшка, адаптер, данные. Адаптер нужен для поставления данных вьюшке, и все.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
