2013-12-07 18 views
1

中的表中獲取單個列我是Android中的新任何幫助,將不勝感激。 我把ID,時間,經度和緯度放在我的桌子上。我的問題是如何單獨獲取它們並將其放入數組中。在這裏,我在一個字符串中獲取它們。如何從android

這是

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; 
    } 


} 
+0

我不知道如果我得到你想要做的。但是,您是否嘗試製作對象並將它們存儲爲列表而不是數組?或者你甚至可以使對象的數組...所以一個對象將包含它的ID,時間,經度和緯度 – vandus

+0

我想做一個對象數組 – user2910232

回答

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; 
}