Поиск по БД
Поиск по БД
Есть БД в ней три столбца id, email, link, не могу понять как найти в базе нужную строку по введённому email и вывести значение из link, упираюсь на пример:
Урок 34. Хранение данных. SQLite
Прошу помочь))
Урок 34. Хранение данных. SQLite
Прошу помочь))
Re: Поиск по БД
select link from sometable where email like 'andrew@gmail.com'
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: Поиск по БД
вместо Like = кажется можно, проверь.
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: Поиск по БД
Если честно я не понял, код мне знаком по php, но не соображу какой синтаксис должен быть в java, вот что делаю щас
Туда иду хоть нет?
"с - это Cursor"
Код: Выделить всё
Log.d(LOG_TAG, "--- Search by Email ---");
columns = new String[] { "link" };
c = db.query("mytable", columns, null, null, "email", null, null);
int nameColIndex = c.getColumnIndex("link");
Log.d(LOG_TAG, "Output" + c.getString(nameColIndex));"с - это Cursor"
Re: Поиск по БД
в уроке 36 подробно описано это
а лучше и понятнее делать так, как в 37 через rawQuery(запрос к нему я уже написала)
а лучше и понятнее делать так, как в 37 через rawQuery(запрос к нему я уже написала)
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: Поиск по БД
Не получается, возвращает 0 rows В базе есть 123.
Вот что в обработчике кнопки:
Что не так?
Вот что в обработчике кнопки:
Код: Выделить всё
Log.d(LOG_TAG, "--- INNER JOIN with rawQuery---");
String sqlQuery = "select name from mytable where email like '123' = ?";
c = db.rawQuery(sqlQuery, new String[]{"123"});
if (c.moveToFirst()) {
int nameColIndex = c.getColumnIndex("name");
do {
Log.d(LOG_TAG, "name = " + c.getString(nameColIndex));
} while (c.moveToNext());
} else
Log.d(LOG_TAG, "0 rows");
c.close();Re: Поиск по БД
эй-эй.. так не пойдет "select name from mytable where email like '123' = ?";
либо так select name from mytable where email like '123'
либо так попробуй select name from mytable where email = '123'
если у тебя с вопросиками, то так
select name from mytable where email like ?
или так
select name from mytable where email =?
либо так select name from mytable where email like '123'
либо так попробуй select name from mytable where email = '123'
если у тебя с вопросиками, то так
select name from mytable where email like ?
или так
select name from mytable where email =?
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: Поиск по БД
like - это оператор сравнения строк, при котором можно использовать подстановки типа
= работает быстрее, like медленнее
И еще совет. При сравнении строк лучше их приводить или к нижнему или верхнему регистру, а то не сравнится, если допустим название будет написано с большой буквы или капслоком.
где % это любые символы, а_ это 1 символSELECT FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX_'
= работает быстрее, like медленнее
И еще совет. При сравнении строк лучше их приводить или к нижнему или верхнему регистру, а то не сравнится, если допустим название будет написано с большой буквы или капслоком.
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 писал(а): select name from mytable where email like ?
или так
select name from mytable where email =?
Как всё сложно в этом java!((
ужс!
В общем остановился на варианте вот таком
Код: Выделить всё
String sqlQuery = "select name from mytable where email =?";
c = db.rawQuery(sqlQuery, new String[]{searchText.getText().toString()});
if (c.moveToFirst()) {
int nameColIndex = c.getColumnIndex("name");
do {
Log.d(LOG_TAG, "name = " + c.getString(nameColIndex));
} while (c.moveToNext());
} else
Log.d(LOG_TAG, "0 rows");Re: Поиск по БД
это ж не java, это sql 
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: Поиск по БД
вот на php там всё прозрачноFoenix писал(а):это ж не java, это sql
Код: Выделить всё
if (isset($_POST['search'])) {
$query = "SELECT `link` FROM `$userstable` where `email` = '" . mysql_real_escape_string($_POST['search']) . "' limit 1";
$result = mysql_query($query) or trigger_error(mysql_errno() . ' ' . mysql_error() . ' query: ' . $sql);
if (!mysql_num_rows($result)) {
echo "В базе нет такого email: {$_POST['search']}";
} else {
$result = mysql_fetch_assoc($result);
echo $result['link'];
}
}Re: Поиск по БД
ну для меня, допустим, это выглядит как иероглифы 
Поэтому я тебе вначале запрос и написала. Тут же тоже можно почти так же. Вначале составляешь строку, т.е. без вопросиков, просто к строке "select name from mytable where email =" добавляешь свою строку с email searchText.getText().toString()
"select name from mytable where email ="+searchText.getText().toString()
а потом все это сразу загоняешь в rawQuery: rawQuery(sqlQuery, null)
Способ еще чем хорош? да тем, что когда запрос сложный, да на несколько таблиц, можно всю эту подготовленную строку выдать в лог и запустить в каком-нибудь sql-мэнеджере на своей базе. Да и вообще видно сразу что не так. Сомневаюсь, что это в php так все прозрачно)
Поэтому я тебе вначале запрос и написала. Тут же тоже можно почти так же. Вначале составляешь строку, т.е. без вопросиков, просто к строке "select name from mytable where email =" добавляешь свою строку с email searchText.getText().toString()
"select name from mytable where email ="+searchText.getText().toString()
а потом все это сразу загоняешь в rawQuery: rawQuery(sqlQuery, null)
Способ еще чем хорош? да тем, что когда запрос сложный, да на несколько таблиц, можно всю эту подготовленную строку выдать в лог и запустить в каком-нибудь sql-мэнеджере на своей базе. Да и вообще видно сразу что не так. Сомневаюсь, что это в php так все прозрачно)
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
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Поиск по БД
Зачем человека плохому учишь?Foenix писал(а):"select name from mytable where email ="+searchText.getText().toString()
С php примером, кстати, та-же проблема.
Andrew_qb писал(а):Код: Выделить всё
... $query = "SELECT `link` FROM `$userstable` where `email` = '" . mysql_real_escape_string($_POST['search']) . "' limit 1"; ...
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Поиск по БД
это совершенно не плохо, я это для целей тестирования писала. Да, могут быть оказии
но это уж при совсем странных обстоятельствах.
кстати, я забыла, можно воспользоваться queryBuilder-ом и тогда оттуда выносить в лог query, это тоже удобно.
кстати, я забыла, можно воспользоваться queryBuilder-ом и тогда оттуда выносить в лог query, это тоже удобно.
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
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Поиск по БД
Если какой-нибудь шутник сделает sql инъекцию и похерит всю базу - это уже не оказия.Foenix писал(а):Да, могут быть оказиино это уж при совсем странных обстоятельствах.
Хотя, с php я немного погорячился. Там mysql_real_escape_string используется, а это нормально.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
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