如何从android中的表中获取单个列

时间:2013-12-07 18:24:38

标签: android sqlite

我是android的新手任何帮助都将受到赞赏。 我把Id,时间,经度和纬度放在我的桌子上。我的问题是如何单独获取它们并放入一个数组。在这里,我用一个字符串获取它们。

这是我的数据库类

public class Database{
    private static final String Column_Id = "Id";
    public static final String time = "Time";
    public static final String longitude = "Longitude";
    public static final String latitude = "Latitude";

    private static final String Table_Name = "Gps";
    private static final String Database_Name = "My_Database.db";
    private static final int Version = 1;
    private Context context;
    private SQLiteDatabase db;
    private DbHelper helper;
    public Database() {
        // TODO Auto-generated constructor stub
    }


    private static class DbHelper extends SQLiteOpenHelper {

        public DbHelper(Context context) {
            super(context, Database_Name, null, Version);

        }

        @Override
        public void onCreate(SQLiteDatabase db) {

            String Create_Database= "CREATE TABLE "
                    +Table_Name
                    + "("
                    + Column_Id
                    + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                    + time
                    + " TEXT NOT NULL, "
                    + longitude
                    + " TEXT NOT NULL, "
                    + latitude
                    + " TEXT NOT NULL  );";
db.execSQL(Create_Database);


        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) {

            db.execSQL("DROP TABLE IF EXISTS " + Table_Name);
            onCreate(db);
        }

    }
    public Database(Context context) {
        this.context = context;

    }

    public Database open() {
        helper = new DbHelper(context);
        db = helper.getWritableDatabase();
        return this;

    }

    public void close() {
        helper.close();
    }

    public long insertRows(String time2,double d, double e){
                    ContentValues value=new ContentValues();
                        value.put(time, time2);
                        value.put(longitude, d);
                        value.put(latitude, e);
                        return db.insert(Table_Name,null,value);
                    }
   /*  public Cursor getAllRows(){
       Cursor cursor=db.query(Table_Name, new String[]{Column_Id,time,longitude,latitude}, null,null, null, null, null);
        return cursor;
        }
     */
    public String getData() {
        String anArray[]=new String[] {Column_Id,time,longitude,latitude};
        Cursor c=db.query(Table_Name, anArray, null, null, null, null, null);
        String result="";

        int id=c.getColumnIndex(Column_Id);
        int time1=c.getColumnIndex(time);
        int longitude1=c.getColumnIndex(longitude);
        int latitude1=c.getColumnIndex(latitude);

        for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
            result=result+ c.getString(id)+ "          " +c.getString(time1)+ "      "+c.getString(longitude1)+"      "+c.getString(latitude1)+"\n";
        }
        return result;
    }


 }

1 个答案:

答案 0 :(得分:1)

首先,您需要创建对象(要在数组中返回):

public class MyGps{
    public long id;
    public String time;
    public String longitude;
    public String latitude;

    public MyGps(long id, String time, String longitude, String latitude){
        this.id = id;
        this.time = time;
        this.longitude = longitude;
        this.latitude = latitude;
    }
}

然后,替换你的getData方法以返回该对象的数组。

public MyGps[] getData() {
    String anArray[]=new String[] {Column_Id,time,longitude,latitude};
    Cursor c=db.query(Table_Name, anArray, null, null, null, null, null);
    MyGps[] result = new MyGps[c.getCount()];
    int currentIndex = 0;
    int id=c.getColumnIndex(Column_Id);
    int time1=c.getColumnIndex(time);
    int longitude1=c.getColumnIndex(longitude);
    int latitude1=c.getColumnIndex(latitude);

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
        result[i++] = new MyGps(c.getLong(id), c.getString(time1), c.getString(longitude1), c.getString(latitude1));
    }
    return result;
}
相关问题