使用Cursor检索SQLite数据库

时间:2014-03-03 17:07:19

标签: android sql sqlite google-maps

我认为我没有做到这一点。一个伙伴告诉我使用cursor.getColumnIndex()来检索该表列中项目的值。在我看来它只是返回表中列的位置的int值,这就是为什么当我执行下面的代码时,我得到的是我的lat和long值的2.0或3.0,因为它们是第二和第三列桌子。

使用此方法返回lat long列中的项而不是它们在表中的位置的正确方法是什么?

以下是我在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;
     }

2 个答案:

答案 0 :(得分:4)

此:

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

应该是:

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

和双经度相同

答案 1 :(得分:1)

int cloumnIndex = cursor.getColumnIndex("lat");  为您提供包含“lat”值的列的索引 找到该列的索引后,您需要找到值。

cursor.getDouble(columnIndex);