android数据库sqlite rawquery,没有内容

时间:2013-07-16 12:47:51

标签: database sqlite

我有一个名为Wartung的活动。在此活动中,文本字段应由数据库内容自动填充。写入数据库表格,但从中读取。 我没有在LogCat中收到任何错误或警告。

在方法Wartung.getWartungsDaten(String serienNr)中,我调用辅助类DBController.getLetzterWartungsDaten(String serienNr)的方法。最后一个对数据库执行rawquery。

为了测试代码的哪些部分被执行,ich做了一个显示的吐司(“1”),也是吐司(“2”),但吐司(“3”)不是。问题必须在“Cursor wartungsCursor = this.dbHelper.getLetzteWartungsDaten(serienNr);”行中。或者分别在getLetzteWartungsDaten()方法的helper类中。

这是我的班级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");
    }
}

这是我的Helper类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);  
}

我有其他一些阅读方法的方法,但只有这个方法不起作用,我不知道为什么。

我希望你能帮助我。 谢谢!

1 个答案:

答案 0 :(得分:0)

你有一个不必要的逗号:

DBController.KEY_ZEIT +“,”+                 “来自”

即。语法错误。