2014-03-03 72 views
2

我不認爲我一直這樣做是正確的。一個好友告訴我使用cursor.getColumnIndex()來檢索該表列中項目的值。在我看來,它只是返回表格中列的位置的int值,這就是爲什麼當我執行下面的代碼時,我得到了2.0或3.0的我的經緯度值,因爲它們是第二和第三列桌子。使用光標檢索SQLite db

什麼是這種方法返回在長長的列中的項目,而不是他們在表中的位置正確的方法是什麼?

下面是我用用getColumnIndex()什麼:

public List<LatLng> getAllPositions() { 
    List<LatLng> positionList = new ArrayList<LatLng>(); 
     SQLiteDatabase database; 
     ResumeMySQLiteHelper dbHelper; 

     dbHelper = new ResumeMySQLiteHelper(this); 
    database = dbHelper.getWritableDatabase(); 

    String[] allColumns = { ResumeMySQLiteHelper.COLUMN_ID, 
       ResumeMySQLiteHelper.COLUMN_COMMENT, ResumeMySQLiteHelper.COLUMN_LAT, ResumeMySQLiteHelper.COLUMN_LONG }; 

    Cursor cursor = database.query(ResumeMySQLiteHelper.TABLE_NAME, 
     allColumns, null, null, null, null, null); 

    cursor.moveToFirst(); 
    while (!cursor.isAfterLast()) { 


     double latitude = cursor.getColumnIndex("lat"); 
     double longitude = cursor.getColumnIndex("long"); 
     String testString = Double.toString(latitude); 
     String testLong = Double.toString(longitude); 
     Log.w("myApp", testString + " " + testLong); 

     //currently prints myApp 2.0 3.0 for every row in table 

     LatLng newLatLng = new LatLng(latitude, longitude); 
     positionList.add(newLatLng); 
     cursor.moveToNext(); 
    } 
    // make sure to close the cursor 
    cursor.close(); 
    return positionList; 
    } 

回答

4

此:

double latitude = cursor.getColumnIndex("lat"); 

應該是:

double latitude = cursor.getDouble(cursor.getColumnIndex("lat")); 

和雙經度

相同
+2

是的,你得到那一個:D – MDMalik

+1

我剛纔讀了幾分鐘之前你的問題。或者你會回答相同的問題。 ;) –

+2

@ArtooDetoo很好很棒! +1 up –

1

int cloumnIndex = cursor.getColumnIndex("lat"); 爲找到保存「lat」值 的列的索引,找到該列的索引後需要查找值。

cursor.getDouble(columnIndex);