如何从android sqlite数据库中获取多个项目并将其存储在数组中?

时间:2013-03-03 13:40:06

标签: android sqlite

我使用静态数据库来获取数据。我从数据库中获取静态位置的经度和纬度,将其存储在字符串中并使用。如果我想提取所有经度和纬度并将其存储在数组中...我的意思是大小[137] [15]的数组在单个2d数组中存储纬度和经度.....或2个单独的1 d数组。一个用于纬度..另一个用于纬度......

DataBaseHelper2 mDbHelper = new DataBaseHelper2(this);
try {
    mDbHelper.createDataBase();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}      
try {
    mDbHelper.openDataBase();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}   
    Spinner s1=(Spinner) findViewById(R.id.spinner1);
    int index1=s1.getSelectedItemPosition();
    String Text1 = s1.getSelectedItem().toString();
    String Text3="";
    String Text4="";

    if(index1==0)
    {
        Toast.makeText(getApplicationContext(),"Please Enter station", Toast.LENGTH_SHORT).show();
    }
    else{
    Cursor c=mDbHelper.fetchQuery(Text1);

    int latitude =  c.getColumnIndex("lat");
    int longitude = c.getColumnIndex("lng");

    for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
        Text3=Text3 + c.getString(latitude)+"\n";
        Text4=Text4 + c.getString(longitude)+"\n";
    }

    Double p,p1;
    p=Double.valueOf(Text3).doubleValue();
    p1=Double.valueOf(Text4).doubleValue();

fetchquery是一种提取经度和纬度的方法,其中站点的名称与spinner1的文本匹配。

2 个答案:

答案 0 :(得分:0)

使用List<BasicNameValuePair>它们将以键值方式存储。在迭代存储时,将它们添加到列表中,如:

List<BasicNameValuePair> latLongList = new ArrayList<BasicNameValuePair>();
 for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
        latLongList.add(new BasicNameValuePair(c.getString(latitude), c.getString(longitude)));
    }

然后你可以随意使用它。在这种情况下,纬度将是关键,经度将是价值。

这是这样做的一种方式。另外,BasicNameValuePair也可以使用android.location.Location并以相同方式设置。

答案 1 :(得分:0)

我认为你会遇到更多麻烦而不是使用二维数组。如果你想坚持2个常规数组,那么也许你可以查看下面的代码:

        if(index1==0){
            Toast.makeText(getApplicationContext(),"Please Enter station", Toast.LENGTH_SHORT).show();
        }else{
        Cursor c=mDbHelper.fetchQuery(Text1);
        arrLatitude = new String [c.getCount()];
        arrLongitude = new String [c.getCount()];

        int latitude =  c.getColumnIndex("lat");
        int longitude = c.getColumnIndex("lng");

        i = 0;
        for(c.moveToFirst();!c.isAfterLast();c.moveToNext()){
            Text3=Text3 + c.getString(latitude)+"\n";
            Text4=Text4 + c.getString(longitude)+"\n";
            arrLatitude[i] = Text3;
            arrLongitude[i] = Text4;
        i++;
        }

就个人而言,我宁愿用一个对象将这两个Strings放在一起。这样,如果索引因任何原因而不匹配,您就可以放心。