Сумма значений столбца

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Сумма значений столбца

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

1. Сумму из курсора использовать так:

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

if (mCursor.getCount() > 0) {
			mCursor.moveToFirst();
			return mCursor.getDouble(mCursor.getColumnIndex("summa"));
		} else {
			return 0;
		}
ну или вместо return поставь присвоение какое нужно.
А еще не получается с выборкой даты из заданного промежутка
и не получится, потому что ты меня не слушаешься.
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 » 26 авг 2013, 22:44

Слушаюсь) я теперь использую формат даты как вы сказали но все равно ошибка

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

Re: Сумма значений столбца

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

А с суммой этот код в адаптер засунуть или в активити где вывод суммы??

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

Re: Сумма значений столбца

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

смотря где тебе это число нужно будет. Суть в том, чтоб поставить курсор на 1 запись и считать оттуда значение. А, забыла, можно еще проверить курсор на то, что в нем есть хоть 1 запись (на всякий случай). Я лично делаю типа функции такой, где курсор на входе, а число на выходе, так удобно сразу присваивать значение в тот же текствью.
R.id.team

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

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

Re: Сумма значений столбца

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

antonbright писал(а):Слушаюсь) я теперь использую формат даты как вы сказали но все равно ошибка
А какая же ошибка, повтори суть.
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 » 29 авг 2013, 19:54

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

08-29 20:45:24.213: E/AndroidRuntime(3520): FATAL EXCEPTION: main
08-29 20:45:24.213: E/AndroidRuntime(3520): java.lang.IllegalArgumentException: the bind value at index 2 is null
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.database.sqlite.SQLiteProgram.bindString(SQLiteProgram.java:234)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.database.sqlite.SQLiteQuery.bindString(SQLiteQuery.java:182)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:48)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1454)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1424)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at com.arun.registrationform.RegistrationAdapter.testlol(RegistrationAdapter.java:175)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at com.arun.registrationform.SelectionsActivity.onClick(SelectionsActivity.java:158)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.view.View.performClick(View.java:2408)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.view.View$PerformClick.run(View.java:8816)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.os.Handler.handleCallback(Handler.java:587)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.os.Handler.dispatchMessage(Handler.java:92)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.os.Looper.loop(Looper.java:123)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at android.app.ActivityThread.main(ActivityThread.java:4633)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at java.lang.reflect.Method.invoke(Method.java:521)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
08-29 20:45:24.213: E/AndroidRuntime(3520): 	at dalvik.system.NativeStart.main(Native Method)

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

public Cursor testlol(String test3, String test4){
	opnToWrite();
	String sqlQuery = "select * from REGISTRATION_TABLE "
     + "where TESTDATE  BETWEEN ? and ?";
	Cursor  c = database_ob.rawQuery(sqlQuery, new String[] {test3,test4});
	return c;// на этой строке ошибка
	}

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

Re: Сумма значений столбца

Сообщение antonbright » 29 авг 2013, 19:57

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

 return c.getDouble(c.getColumnIndex("LNAME")); 
здесь пишет не могу конвертуть double в курсор

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

Re: Сумма значений столбца

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

java.lang.IllegalArgumentException: the bind value at index 2 is null
перевожу как связанное значение номер 2 - null. Только не совсем пойму в чем дело.. Попробуй вывести в лог значения test3,test4

(Я может быть сама и не показатель правильности кода, но переменные с такими названиями - нож по сердцу. Старайся давайть осмысленные имена сразу, потом же в своем коде сам ничего не поймешь..)
***
Второй вопрос - "не могу конвертуть double в курсор" вообще не въеду, видимо ты что-то перевел не так.
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 » 30 авг 2013, 14:31

С выборкой разобрался почти

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

public Cursor test(String test3, String test4){
	opnToWrite();
	String sqlQuery = "SELECT * FROM REGISTRATION_TABLE "
     + "WHERE" +openHelper_ob.TESTDATE+ "BETWEEN" +test3+ "AND" + test4;
	Cursor  c = database_ob.rawQuery(sqlQuery, null);
	return c;
	}
теперь выводятся значения всей бд) ну эту ошибку сам найду

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

Re: Сумма значений столбца

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

Антон, не торопись, добей вариант с ?

Я уже не помню где, но тут недавно был намек мне, что так делать не правильно. Я и сама знаю)
Могу объяснить почему)
ДОпустим у тебя поля test вносятся пользоваелем в каком-то едитвью. Так вот, если у тебя пользователь вместо test4 внесет допустим дату, затем поставит точку с запятой, а затем напишет команду удаления всех данных из базы, то твой rawQuery радостно все выполнит. Вот будет фокус.. ? :))

Т.е. теоретически так делать можно, но в тех местах, где гарантированно такого не произойдет, ну и вообще неплохо знать о такой засаде.
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 » 30 авг 2013, 16:55

Об этом не подумал) пригодится на будущее. спасибо Но здесь мои значения берутся не из едитвью а из диалога с датой, а вообще кому может понадобиться удалять базу данных которая не на облаке а на их телефоне)

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

Re: Сумма значений столбца

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

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

protected Dialog onCreateDialog(int id) {
	      if (id == DIALOG_DATE) {
	        DatePickerDialog tpd = new DatePickerDialog(this, myCallBack, myYear1, myMonth1, myDay1);
	        return tpd;
	      }
	      else if (id == DIALOG_DATE2) {
	    	  DatePickerDialog dpd1= new DatePickerDialog(this, mysecondcallback, myYear2, myMonth2, myDay2);
	    	  return dpd1;
		}
	      return super.onCreateDialog(id);
	    }

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

protected Dialog onCreateDialog(int id) {
	      if (id == DIALOG_DATE) {
	        DatePickerDialog tpd = new DatePickerDialog(this, myCallBack, myYear1, myMonth1, myDay1);
	        return tpd;
	      }
	      else if (id == DIALOG_DATE2) {
	    	  DatePickerDialog dpd1= new DatePickerDialog(this, mysecondcallback, myYear2, myMonth2, myDay2);
	    	  return dpd1;
		}
	      else if (id == DIALOG_DATE3) {
	    	  DatePickerDialog dpd2= new DatePickerDialog(this, myCallBack, myYear1, myMonth1, myDay1);
		}
	      return super.onCreateDialog(id);
	    }

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

case R.id.btntest1:
			showDialog(DIALOG_DATE);
			break;
		case R.id.btntest2:
			showDialog(DIALOG_DATE2);
			break;
		case R.id.btntest3:
			String[] from3 = { helper_ob.FNAME, helper_ob.LNAME, helper_ob.DATE, helper_ob.CATEGORY};
			int[] to3 = { R.id.tv_fname, R.id.tv_lname, R.id.tv_date, R.id.tv33};
			cursor = adapter_ob.testlol(date2,date3);
			SimpleCursorAdapter cursorAdapter2 = new SimpleCursorAdapter(this,
					R.layout.row1, cursor, from3, to3);
			lv1.setAdapter(cursorAdapter2);

вроде же все верно почему после вызова диалога номер 1 значение в диалоге номер 2 такое же как в 1 .
и как я уже сказал выводятся просто все значения бд вместо выборки

Ответить