Выборка из БД

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 08 авг 2013, 14:09

datepicker?

antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 08 авг 2013, 14:14

есть ли пример как в date1 и date2 можно ввести дату используя его?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 08 авг 2013, 14:26

смотря какой формат даты ты выбрал
и придется использовать объект календарь.
в сети примеров куча
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 08 авг 2013, 14:41

String sqlQuery ="SELECT * FROM registrationtable where date BETWEEN date1 and date2"
c = db.rawQuery(sqlQuery, ?????????);


вместо знаков вопроса нужно поставить значения date1 и date2 ? я не совсем понял

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 08 авг 2013, 15:11

вот урок
http://startandroid.ru/ru/uroki/vse-uro ... query.html
отсюда пример

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

String sqlQuery = "select PL.name as Name, PS.name as Position, salary as Salary "
        + "from people as PL "
        + "inner join position as PS "
        + "on PL.posid = PS.id " 
        + "where salary > ?";
    c = db.rawQuery(sqlQuery, new String[] {"12000"});
т.е. вместо моих date1 и date2 ставь вопросики, а потом формируй строку String[] из параметров - настоящих дат.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 08 авг 2013, 15:13

Спасибо. попробую)
сейчас поищу про дейтпикер

antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 08 авг 2013, 22:01

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

public class MainActivity extends Activity implements OnClickListener{
	private DatePicker dobPicker;
	Button btnshow, btnadd;
	TextView tv1, tv11, tv22;
	String dobStr, dobStr2;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		btnshow = (Button)findViewById(R.id.btnshow);
		btnshow.setOnClickListener(this);
		btnadd = (Button)findViewById(R.id.btnadd);
		btnadd.setOnClickListener(this);
		dobPicker = (DatePicker)findViewById(R.id.dobPicker);
       tv1 = (TextView) findViewById(R.id.tv1);
       tv11 = (TextView) findViewById(R.id.tv11);
       tv22 = (TextView) findViewById(R.id.tv22);
       final Calendar c = Calendar.getInstance();
		Integer Tyear = c.get(Calendar.YEAR);
		Integer Tmonth = c.get(Calendar.MONTH);
		Integer Tday = c.get(Calendar.DAY_OF_MONTH);
		StringBuilder sb1=new StringBuilder();
       sb1.append(Tyear.toString()).append("/").append(Tmonth.toString()).append("/").append(Tday.toString());
     dobStr2=sb1.toString();
        tv11.setText(dobStr2);
	}
 public void onClick(View v){
	 switch (v.getId()){
	 case R.id.btnadd:
		
		 Integer dobYear = dobPicker.getYear();
	        Integer dobMonth = dobPicker.getMonth();
	        Integer dobDate = dobPicker.getDayOfMonth();
	        StringBuilder sb=new StringBuilder();
	        sb.append(dobYear.toString()).append("/").append(dobMonth.toString()).append("/").append(dobDate.toString());
	      dobStr=sb.toString();
	      tv22.setText(dobStr);
	 case R.id.btnshow:
		 if (dobStr == dobStr2){
		 tv1.setText("TRUE");
	 }
		 else{ 
			 tv1.setText("FALSE");
		 }
 }
 }}
думаю по коду понятно то хочу сделать, в текствью результаты одинаковые но почему то когда сравниваю их if (dobStr == dobStr2) пишет false (

antonbright
Сообщения: 56
Зарегистрирован: 24 июн 2013, 18:50

Re: Выборка из БД

Сообщение antonbright » 09 авг 2013, 17:21

сделал все

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 11 янв 2015, 12:23

хранение даты неверное, ничего ты с такой датой не сделаешь. или храни в timestamp или в формате YYYYMMDD (если не нужно учитывать время) или со временем.
и сравнивай как написано в уроках как целые числа.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Выборка из БД

Сообщение aleksbim » 11 янв 2015, 17:35

Если в БД хранить значение даты-времени в long System.currentTimeMillis(), то
как можно из long получить номер месяца и год?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 11 янв 2015, 17:56

c помощью методов, класс Calendar посмотри.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Выборка из БД

Сообщение aleksbim » 11 янв 2015, 19:31

C календарем я понял только, то, как можно получить текущие системные значения. А мне нужна выборка из БД по (месяцам).
Какой путь правильный?
1. Либо я в БД изначально сохраняю long даты-времени, если из него можно вытащить номер месяца и год,
2. Либо изначально добавлять в таблицу колонки "№ месяца" и "год".

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 11 янв 2015, 20:55

таймстемп - это кол-во секунд, прошедших с определенной даты.
Таким образом, для выборки 1 месяца нужно перевести 1е число этого месяца 00 00 часов в секунды таймстемпа, а второе - перевести последнее число этого месяца в секунды таймстемпа. И выбирать как обычное целое число из таблицы.
Второй вариант я сказала, но если не ясно - то повторю. Хранить дату в формате YYYYMMDD. И выборка будет аналогичная. Только тут уже ЯСНО КАК ДЕНЬ какую подставить цифру, чтобы получить заданную выборку.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Выборка из БД

Сообщение aleksbim » 20 янв 2015, 23:59

Изначально добавляю в таблицу колонки "№ месяца" и "год".
Читаю:
cursor = db.query("table", null, "month like ?",месяц , null, null, null);// Так на выходе работает выборка по месяцу
cursor = db.query("table", null, "year like ?", год , null, null, null); // Так на выходе работает выборка по году
Как одновременно поставить запрос из 2-х параметров (месяц и год)?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 21 янв 2015, 12:27

неправильно дату хранишь.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Выборка из БД

Сообщение aleksbim » 21 янв 2015, 19:02

А если так вопрос поставить?
cursor = db.query("table", null, "column1 like ?", X , null, null, null);// Так на выходе работает выборка по X
cursor = db.query("table", null, "column2 like ?", Y , null, null, null); // Так на выходе работает выборка по Y
Как одновременно поставить запрос из 2-х параметров (X и Y)?
Последний раз редактировалось aleksbim 21 янв 2015, 19:30, всего редактировалось 2 раза.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Выборка из БД

Сообщение Foenix » 21 янв 2015, 19:04

делай что хочешь, я тебе и так и сяк растолковывала как будет правильно
в неправильном я не хочу помогать - сам возись.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Выборка из БД

Сообщение doter.ua » 21 янв 2015, 19:31

aleksbim писал(а):А если так вопрос поставить?
cursor = db.query("table", null, "month like ?", X , null, null, null);// Так на выходе работает выборка по X
cursor = db.query("table", null, "year like ?", Y , null, null, null); // Так на выходе работает выборка по Y
Как одновременно поставить запрос из 2-х параметров (X и Y)?
1) Удаляете весь код, связанный с датой и Бд.
2) Гуглите timestamp и SimpleDataFormat.
3) Пишете все с нуля.
4) Excellent!
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

aleksbim
Сообщения: 81
Зарегистрирован: 02 фев 2013, 02:52

Re: Выборка из БД

Сообщение aleksbim » 21 янв 2015, 19:43

Давайте забудем про то, что я работаю с датой! Если X и Y это String Существует ли ответ на мой вопрос? Как сложить два запроса в один?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Выборка из БД

Сообщение doter.ua » 21 янв 2015, 19:58

aleksbim писал(а):Давайте забудем про то, что я работаю с датой! Если X и Y это String Существует ли ответ на мой вопрос? Как сложить два запроса в один?

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

String[] args = { X, Y };
Cursor cursor = db.query("TABLE_NAME", null, "column1=? AND column2=?", args, null, null, null);
P.S. думаю говорить про одинарные кавычки не нужно? ну т.е. String X = " 'янв' "
Но опять же, на велосипедах далеко не уедешь, и ознакомится с вышеупомянутыми штуками будет полезно.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить