2013-07-16 57 views
0

我有一個叫做Wartung的活動。在此活動中,應該由數據庫內容自動填充的文本字段。寫入數據庫表的工作原理爲,但從中讀取並不是。 我在LogCat中沒有收到任何錯誤或警告。android數據庫sqlite原始查詢,無內容

在方法Wartung.getWartungsDaten(String serienNr)中,我調用輔助類DBController.getLetzterWartungsDaten(String serienNr)的方法。最後一個對數據庫進行了原始查詢。

爲了測試代碼的哪個部分被執行,我們將顯示吐司(「1」),同時吐司(「2」),但吐司(「3」)不是。該問題必須在行「遊標wartungsCursor = this.dbHelper.getLetzteWartungsDaten(serienNr);」或者分別在方法getLetzteWartungsDaten()中的helper類中。

這裏是我的類維護保養:

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); 
} 

我有一些其他的方法與閱讀方法,但只有這一個不工作,我不知道爲什麼。

我希望你能幫助我。 謝謝!

回答

0

您有一個不必要的逗號:

DBController.KEY_ZEIT + 「」 + 「FROM」

即語法錯誤。