2010-12-02 2 views
0

nicht auswählen Ich versuche, einfach jede einzelne Zeile derzeit in meiner SQLite-Datenbank auf meinem Android zu greifen und jede einzelne Spalte aus jeder Zeile zu greifen. Ich glaube, dass die Daten tatsächlich in der Datenbank sind, weil ich eine separate Funktion DataHelper.selectAll() aufrufen, um alle Daten zu protokollieren. Die Daten, die ich erwarte, erscheinen korrekt in LogCat in Eclipse. Wenn es wichtig ist, das DataHelper.java Programm, das ich im Grunde verwende, ist hier gefunden: http://www.screaming-penguin.com/node/7742. Ich werde den entsprechenden Code unten posten. Das Wichtige ist in doPost().Kann Spalten aus der Datenbank mit Android Cursor

// from inside onCreate of Main (which extends activity)... 
    Button buttonPost = (Button) findViewById(R.id.buttonPost); 
    buttonPost.setOnClickListener(new OnClickListener() { 
    // doesn't actually post to website yet 
    public void onClick(View v) { 
     Log.d(TAG, "In onclicklistener."); 
     ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
     NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     if (mWifi.isConnected()) { 
      Log.d(TAG, "Connected, calling doPost()!"); 
      if (doPost()) { 
         // ... 
       } 
      } 
    } 
    }); 

public boolean doPost() { 
    boolean outcome = false; 
    long ret = dh.insert(main.id++ + "," + "my test2" + "," + "5:4:2:3" + "," + -300 + "," + -300 + "," + -1 + "," + 
-70 + "," + 3 + "," + -3 + "," + main.device_id); 
    Log.d(TAG, "ret from static insert:" + ret); 

    Cursor cursor = this.dh.db.query(DataHelper.TABLE_NAME, 
     new String[] { "id", "rssi", "wap_id", "lat" }, 
     null, null, null, null, "id desc"); 
    Log.d(TAG, "Cursor column count: " + cursor.getColumnCount()); 
    if (cursor.moveToFirst()) { 
    do { 
     HttpPost post = new HttpPost(OUR_SERVER); 
     Log.d(TAG, "rssi index:" + cursor.getColumnIndex("rssi")); 
     Log.d(TAG, "the rssi: " + cursor.getInt(cursor.getColumnIndex("rssi"))); 
    } while (cursor.moveToNext()); 
    } 

    // release connection here? 
    cm.shutdown(); 

    if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
    } 
return outcome; 
} 

Was ist nun die seltsam ist, in meinem LogCat es erfolgreich die vollständigen Zeilen ausgedruckt (nur als String), so dass ich weiß, ich bin in der Lage auf die Datenbank zuzugreifen. Die RSSI-Werte, die ich erwarte nicht angemeldet sind, stattdessen erhalte ich:

Cursor column count: 4 
id value: 6 
id index: 0 
rssi index:1 
the rssi: 0 
id value: 5 
id index: 0 
rssi index:1 
the rssi: 0 

ich ratlos bin, weil viele Online-Beispielen sind alle Zugangsdaten die gleiche Weise. Hat es damit zu tun, dass ich in einem OnClickListener bin? Es gibt keine Debugger-Warnungen, wenn ich dies tue.

Danke!

Antwort

0

Vergesst nicht. Es stellte sich heraus, dass DataHelper.java Klasse I verwendet nur alles in die erste Spalte einfügt. Das war ziemlich kontraintuitiv. Das ist, was ich bekomme, um Code online zu finden und anzunehmen, dass es das Richtige tut.

Um dies zu beheben, schrieb ich manuell eine vollständige SQL-Anweisung, kompilierte die Anweisung und führte es aus.

Verwandte Themen