Урок 36. SQLite. Подробнее про метод query. Условие, сортировка, группировка
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Объясните, что делается в этой строке:
String s = (String) result.get(rand.nextInt(engColIndex));
String s = (String) result.get(rand.nextInt(engColIndex));
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
В этой строке я для s выбираю из заполненного массива result случайное значение.KamiSempai писал(а):Объясните, что делается в этой строке:
String s = (String) result.get(rand.nextInt(engColIndex));
В результате мне выдается null, хотя Log.d(LOG_TAG, "result = " + result) показывает, что данные существуют.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Может быть проблема в
String s = (String) result.get(rand.nextInt(engColIndex));
у тебя ключ в Map result является String
а тут ты пытаешься искать по типу Int т.к rand.nextInt(engColIndex) возвращает Int.
Попробуй обернуть это все в result.get(String.valueof(rand.nextInt(engColIndex)))
String s = (String) result.get(rand.nextInt(engColIndex));
у тебя ключ в Map result является String
а тут ты пытаешься искать по типу Int т.к rand.nextInt(engColIndex) возвращает Int.
Попробуй обернуть это все в result.get(String.valueof(rand.nextInt(engColIndex)))
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Не помогло. Думается мне, что я совсем не то делаю.
Может подскажете какой-нибудь другой способ засунуть данные из ДБ в массив и потом считать 1 рандомное значение из массива при нажатии кнопки.
Может подскажете какой-нибудь другой способ засунуть данные из ДБ в массив и потом считать 1 рандомное значение из массива при нажатии кнопки.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Не проще переводить позицию на случайную строку и читать данные прямо из курсора без переписывания в "массив"?
Кстати, я понял в чем ваша проблема. Вы думаете что HashMap - это массив, но это не совсем так.
Кстати, я понял в чем ваша проблема. Вы думаете что HashMap - это массив, но это не совсем так.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Хотелось бы увидеть
в каком виде ключи приходят вот тут -
result.put(c.getString(engColIndex), c.getString(rusColIndex));
----> c.getString(engColIndex)
и что приходит вот тут, когда ты делаешь result.get(rand.nextInt(engColIndex)); -
----> rand.nextInt(engColIndex)
в каком виде ключи приходят вот тут -
result.put(c.getString(engColIndex), c.getString(rusColIndex));
----> c.getString(engColIndex)
и что приходит вот тут, когда ты делаешь result.get(rand.nextInt(engColIndex)); -
----> rand.nextInt(engColIndex)
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Ладно, спасибо всем, кто откликнулся.
Понимаю, что зря начал учить программирование. Думаю, что это не моё. Не заточены мозги у меня под это дело.
Понимаю, что зря начал учить программирование. Думаю, что это не моё. Не заточены мозги у меня под это дело.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Рано сдаешься =)
Давай добьем эту проблему, а дальше решишь.
Давай добьем эту проблему, а дальше решишь.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Да просто уже на себя зла не хватает и нервов из-за непонимания, как мне кажется, элементарных вещей, вот руки и опускаются.
Самое интересное, что если работать без базы данных, а задавать данные в массиве, то все получается, все работает как надо. То есть при нажатии кнопки выводятся новые данные на экран и сердце радуется
А вот с базой данных полная беда.
вот полный текст того, что я написал:
Самое интересное, что если работать без базы данных, а задавать данные в массиве, то все получается, все работает как надо. То есть при нажатии кнопки выводятся новые данные на экран и сердце радуется
А вот с базой данных полная беда.
вот полный текст того, что я написал:
Код: Выделить всё
public class MainActivity extends Activity implements OnClickListener {
Button btnMainFwd;
TextView tvMainWord;
TextView tvRusWord;
DbHelper dbHelper;
final String LOG_TAG = "myLogs";
String[] masEngName = new String[] {};
String[] masRusName = new String[] {};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (getIntent().getBooleanExtra("finish", false))
finish();
btnMainFwd = (Button) findViewById(R.id.btnMainFwd);
btnMainFwd.setOnClickListener(this);
dbHelper = new DbHelper(this);
}
@Override
public void onClick(View v) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
Cursor c = db.query("mytable", null, null, null, null, null, null);
switch (v.getId()) {
case R.id.btnMainFwd:
Log.d(LOG_TAG, "=== Читаем одну запись ===");
int idColIndex = c.getColumnIndex("id");
int engColIndex = c.getColumnIndex("engWord");
int rusColIndex = c.getColumnIndex("rusWord");
Map result = new HashMap<String, String>();
if (c.moveToFirst()) {
do {
result.put(c.getString(engColIndex), c.getString(rusColIndex));
Log.d(LOG_TAG, "result = " + result);
} while (c.moveToNext());
Random rand = new Random();
for (int i = 0; i < 1; i++) {
String s = (String) result.get(rand.nextInt(engColIndex));
Log.d(LOG_TAG, "s = " + s);
}
} else
Log.d(LOG_TAG, "0 rows");
c.close();
break;
}
}
class DbHelper extends SQLiteOpenHelper {
public DbHelper(Context context) {
super(context, "DBWords", null, 1);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.d(LOG_TAG, "===Создаем новую ДБ===");
db.execSQL("create table mytable ("
+ "id integer primary key autoincrement," + "engWord text,"
+ "rusWord text, " + "indLearn text" + ");");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
}
}
}
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Я тебе в личку скинул. Если что пиши туда
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Ты не представляешь сколько раз, когда я только за андроид взялась, у меня было ситуаций, когда я думала "это сделать невозможно", вот буквально страшно становилось, т.к. проект был коммерческий изначально. А потом находился выход.-Alex- писал(а):Ладно, спасибо всем, кто откликнулся.
Понимаю, что зря начал учить программирование. Думаю, что это не моё. Не заточены мозги у меня под это дело.
Выход есть всегда, нужно просто не отчаиваться, а искать его, именно тот, правильный - в своем пространстве вариантов
Тут уже были такие, которые спотыкались на базах
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: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Подскажите пожалуйста, каким образом сделать так, что бы результат запроса выводился в окне приложения?
Re: Урок 36. SQLite. Подробнее про метод 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
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Прошу прощения, не так выразился! Мне нужно результат запроса к БД вывести на экран к пользователю, как это лучше сделать? Как я сам понимаю, нужно работать с Spinner?
Re: Урок 36. SQLite. Подробнее про метод 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
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
если не трудно можете дать ссылку на урок? спинер - выпадающий список..Foenix писал(а):ого, это ж в уроках написано. Какой спиннер??
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
думаю, что Вам надо не Spinner, а "Урок 42. Список - ListView".ragvarod писал(а):если не трудно можете дать ссылку на урок? спинер - выпадающий список..Foenix писал(а):ого, это ж в уроках написано. Какой спиннер??
ListView сможет отобразить на экране список данных из БД.
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
Уважаемые гуру, подскажите пожалуйста следующий момент.
Какое условие необходимо задать в массиве, чтобы выбиралось определенное количество записей из него, например 10 записей?
Вот здесь создаю массив из данных БД:
А как необходимо организовать следующий массив, в котором будет отбираться первые 10 записей из массива row?
Заранее благодарю за ответы!
Какое условие необходимо задать в массиве, чтобы выбиралось определенное количество записей из него, например 10 записей?
Вот здесь создаю массив из данных БД:
Код: Выделить всё
if (c.moveToFirst()) {
do {
row = new DbRows(c.getInt(idColIndex), c.getString(engColIndex), c.getString(rusColIndex));
result.add(row);
} while (c.moveToNext());
Log.d(LOG_TAG, "количество записей = " + c.getCount());}
Заранее благодарю за ответы!
Re: Урок 36. SQLite. Подробнее про метод 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
Re: Урок 36. SQLite. Подробнее про метод query. Условие, сор
а не могли бы вы подсказать, какой параметр в запросе отвечает за выбираемое количество записей?Foenix писал(а):отбирать нужное количество записей нужно прямо в запросе, а не манипулировать массивами
например, если для курсора я прописываю значение:
selection = "_id < 10";
то выбираются записи, у которых _id < 10, но это не то.
Мне надо бы какой-нибудь оператор, типа:
selection = "_id count == 10";
Можете подсказать, какой существует оператор, который мне помог бы в этом вопросе.
Заранее благодарен!
Последний раз редактировалось -Alex- 10 дек 2013, 16:44, всего редактировалось 1 раз.