2013-12-07 3 views
1

나는 안드로이드에 대한 새로운 의견을 얻었습니다. 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; 
} 
관련 문제