Member 13901696 Ответов: 1

Результат вывести на экран запрос SQLite в поле TextView


Я попытался сделать отчет на основе даты и вывести результат в виде текста "edt1". Но безрезультатно. Я думаю, что проблема заключается в sql-запросе и именно в спецификации "strdatedebut" и "strdatefin".

Что я уже пробовал:

есть mydatabasehelper :

public String calculrapport(Argent a)
   {
       db = this.getWritableDatabase();
           String rv = "0";
           db = this.getWritableDatabase();
           String query = "select sum(Entree) from Argent where date between \"strdatedebut\" and \"strdatefin\" ;";
           Cursor cursor = db.rawQuery(query , null) ;
           if (cursor.moveToFirst()) {
               rv = cursor.getString(0);
           }
           cursor.close();
           return rv;
       }


Есть в моем классе Rapport.java :



package com.example.pc.myapplication;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
 
public class rapport extends Activity {
 
    DatabaseHelper helper = new DatabaseHelper(this);
 
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.rapport);
 
 
    }
    public void onOKClick ( View v ) {
 
        if (v.getId() == R.id.okrapport) {
 
            EditText datedebut = (EditText) findViewById(R.id.datedebut);
            EditText datefin = (EditText) findViewById(R.id.datefin);
            TextView edt1 = (TextView) findViewById(R.id.resultatrapport);
 
            String strdatedebut = datedebut.getText().toString();
            String strdatefin = datefin.getText().toString();
 
            Argent a = new Argent();
           String sum =  helper.calculrapport(a);
          edt1.setText(sum);
 
       }
 
    }
}

Graeme_Grant

Вы пробовали отлаживать свое приложение? Проверьте эту ссылку о том, как это сделать: Отладка вашего приложения |  Разработчики Android[^]

Member 13901696

Да я пытался отладить приложение но не получил никакой полезной информации

Graeme_Grant

Весь смысл отладки состоит в том, чтобы проверить, что вы получаете ожидаемые значения в каждой строке кода. Если нет, то посмотри, почему бы и нет. Вся отладочная информация полезна, если используется правильно.

Richard MacCutchan

Каковы значения в ваших двух параметрах даты, и возвращал ли SELECT что-нибудь?

Member 13901696

Спасибо за ответ на экскурсию. Два параметра даты фиксируются в классе rapport.java и они всегда менялись. и select ничего не возвращает.

Richard MacCutchan

Тогда вы знаете, где искать, чтобы диагностировать проблему.

1 Ответов

Рейтинг:
9

Mike V Baker

Ваш вопрос не кажется мне правильным.

String query = "select sum(Entree) from Argent where date between \"strdatedebut\" and \"strdatefin\" ;";

Это выглядит так, как будто он будет посылать две литеральные строки strdatedebut и strdatefin, а не вставлять переменные. Попробуй это?
String query = "select sum(Entree) from Argent where date between '" + strdatedebut + "' and '" + strdatefin + "' ;";

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


Richard MacCutchan

Конечно, хорошо подмечено.

Member 13901696

Благодаря всем вам это работает.