0

Wartung というアクティビティがあります。このアクティビティには、データベース コンテンツによって自動入力されるテキスト フィールドがあります。DB テーブルへの書き込みは機能しますが、読み取りは機能しません。LogCat でエラーや警告は表示されませんでした。

メソッド Wartung.getWartungsDaten(String serienNr) で、ヘルパー クラス DBController.getLetzterWartungsDaten(String serienNr) のメソッドを呼び出します。最後の 1 つは、DB に対して生のクエリを実行します。

コードのどの部分が実行されるかをテストするには、表示される toast("1") と toast("2") を作成しますが、 toast("3") は表示されません。問題は、「Cursor wartungsCursor = this.dbHelper.getLetzteWartungsDaten(serienNr);」の行にあるはずです。またはメソッド getLetzteWartungsDaten() のそれぞれのヘルパー クラスで。

ここに私のクラス Wartung があります:

public class Wartung extends Activity {

    private DBController    dbHelper;
    private SQLiteDatabase  db;

    private EditText        serienNr;
    private EditText        datum;
    private EditText        zeit;
    private EditText        benutzer;
    private EditText        beschreibung;
    private EditText        statusAktuell;
    private Spinner         statusNeu;
    private Button          buttonAendern;
    private LinearLayout    layoutStatusAktuell;
    private LinearLayout    layoutStatusNeu;

    private String          sSerienNr;
    private String          sArtikelId;
    private String          sDatum;
    private String          sZeit;
    private String          sBenutzer;
    private String          sStatus;
    private String          sBeschreibung;

    private List<String>    statusListe;
    private List<String>    listeWartungSerienNr;
    private List<String>    listeWartungDatum;
    private List<String>    listeWartungZeit;
    private List<String>    listeWartungBenutzer;
    private List<String>    listeWartungStatus;
    private List<String>    listeWartungBeschreibung;

    private boolean         editModus       = false;
    private boolean         gespeichert     = false;

    private int             statusPosition  = -1;



    /**
     * Initialisierung aller Objekte
     * 
     */
    private void initObjekte() {
        this.serienNr = (EditText) this.findViewById(R.id.editText_wartung_content_serienNr);
        this.datum = (EditText) this.findViewById(R.id.editText_wartung_content_datum);
        this.zeit = (EditText) this.findViewById(R.id.editText_wartung_content_zeit);
        this.benutzer = (EditText) this.findViewById(R.id.editText_wartung_content_benutzer);
        this.statusAktuell = (EditText) this.findViewById(R.id.editText_wartung_content_aktueller_status);
        this.statusNeu = (Spinner) this.findViewById(R.id.spinner_wartung_content_neuer_status);
        this.layoutStatusAktuell = (LinearLayout) this.findViewById(R.id.linearLayoutStatusAktuell);
        this.layoutStatusNeu = (LinearLayout) this.findViewById(R.id.linearLayoutStatusNeu);

        this.listeWartungSerienNr = new ArrayList<String>();
        this.listeWartungDatum = new ArrayList<String>();
        this.listeWartungZeit = new ArrayList<String>();
        this.listeWartungBenutzer = new ArrayList<String>();
        this.listeWartungStatus = new ArrayList<String>();
        this.listeWartungBeschreibung = new ArrayList<String>();

        this.sArtikelId = new String();
        this.sDatum = new String();
        this.sZeit = new String();
        this.sBenutzer = new String();
        this.sStatus = new String();
        this.sBeschreibung = new String();

        this.statusListe = new ArrayList<String>();
        setStatusInSpinner();

        this.beschreibung = (EditText) this.findViewById(R.id.editTextMultiLine_wartung_content_aenderung);


    }

    public void toast(String text) {
        Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
    }


    /**
     * 
     * @param serienNr
     */
    private void getWartungsDaten(String serienNr) {
        this.dbHelper = new DBController(this);
        this.db = this.dbHelper.getReadableDatabase();
        toast("1");
        // Cursor auswerten
        try {
            toast("2");
            Cursor wartungsCursor = dbHelper.getLetzteWartungsDaten(serienNr);
            toast("3");
            // Daten zerlegen
            if (wartungsCursor != null) {
                if (wartungsCursor.moveToFirst()) {
                    do {
                            this.listeWartungDatum.add(wartungsCursor.getString(wartungsCursor.getColumnIndexOrThrow(DBController.KEY_DATUM)));
                            this.listeWartungZeit.add(wartungsCursor.getString(wartungsCursor.getColumnIndexOrThrow(DBController.KEY_ZEIT)));
                    } while (wartungsCursor.moveToNext());
                }
            }
//          String result = "result: " + this.sSerienNr + " " + this.sDatum + " " + this.sZeit + " " + this.sBenutzer + " " + this.sStatus + " " + this.sBeschreibung;
            String result = "result: " + this.listeWartungDatum.get(0).toString() + " " + this.listeWartungZeit.get(0).toString();
            toast("Erhaltene Daten: " + result);
        } catch (Exception e) {
            ;
        } finally {
            this.db.close();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_wartung);
        this.setupActionBar();

        initObjekte();
        setObjekteReadable();

        // Zu Testzwecken wird immer der erste Artikel aus der Datenbank ausgewählt
        getWartungsDaten("SerienNr 0000");
    }
}

そして、これが私のヘルパー クラス DBController です。

public Cursor getLetzteWartungsDaten(String serienNr) {
        this.db = this.getReadableDatabase();
        // Filter-String um die anhängenden Daten über die SerienNr zu bekommen
        String serienNrFilter = "SELECT " +
                DBController.TABLE_WARTUNG + "." + DBController.KEY_DATUM + ", " +
            DBController.TABLE_WARTUNG + "." + DBController.KEY_ZEIT + ", " +
                "FROM " + DBController.TABLE_WARTUNG 
                "ORDER BY " + DBController.KEY_DATUM + " DESC," + DBController.KEY_ZEIT + " DESC" + ")";

        return db.rawQuery(serienNrFilter, /*new String[] { serienNr }*/null);  
}

読み取りメソッドを使用した他のメソッドがいくつかありますが、これだけが機能せず、理由がわかりません。

あなたが私を助けてくれることを願っています。ありがとう!

4

1 に答える 1