2011-11-10 62 views
0

我想知道如何在包含gps數據(緯度,經度)的sqlite中創建數據庫,然後從數據庫中檢索以在地圖上顯示數據?sqlite的gps數據

請我需要它迫切

感謝

回答

1
public class DBAdapter{ 
public static final String KEY_ROWID = "_id"; 
public static final String KEY_latitude = "latitude"; 
public static final String KEY_longitude = "longitude"; 
      Cursor cur=null; 

private static final String DATABASE_NAME = "MyDB.sqlite"; 
private static final String DATABASE_TABLE = "gpsCordinates"; 
private static final int DATABASE_VERSION = 1; 

private static final String DATABASE_CREATE = 
     "create table gpsCordinates(_id integer primary key autoincrement," 
+ "latitude text not null, longitude text not null);"; 

private final Context context; 

private DatabaseHelper DBHelper; 
private SQLiteDatabase db; 

public DBAdapter (Context ctx){ 
    this.context = ctx; 
    DBHelper = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper{ 
    DatabaseHelper (Context context) 
    { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     try{ 
      db.execSQL(DATABASE_CREATE); 
     } 
     catch (SQLException e){ 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    Log.w(TAG,"Upgrading database from version" 
     +oldVersion + " to " +newVersion + ", This will remove all previous data"); 
     db.execSQL("Drop TABLE IF EXISTS"); 
     onCreate(db); 
    } 
} 

public DBAdapter open() throws SQLException { 
    db = DBHelper.getWritableDatabase(); 
    return this; 

} 

public DBAdapter openReadable() throws SQLException { 
    db = DBHelper.getReadableDatabase(); 
    return this; 

} 

public void close(){ 
    DBHelper.close(); 
} 
//*-- inserts a new contact into database --*// 
public long insertContact(String latitudE, String longitudE){ 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_latitude, latitudE); 
    initialValues.put(KEY_longitude, longitudE); 
    return db.insert(DATABASE_TABLE, null, initialValues); 

} 

public Cursor retrieveRecord(){ 
    cur= db.rawQuery("YOUR SQL QUERY", null); 
    return cur; 
} 

這應該創建數據庫的照顧。使用光標檢索您的值。

+1

嘿uchicha。如果滿足你的需要,接受答案如何:)? – Vinoth

+0

哇我必須說你是一個天才..但我有一個問題..當我想要插入數據到數據庫中時,我可以在地圖類中調用insertContact來檢索數據嗎?我的意思是,我有例如這段代碼,我在哪裏把它?: db.execSQL( 「INSERT INTO」 \t + DATABASE_TABLE \t + 「(_id,緯度,經度)」 \t +「VALUES(0 ,12.047838,20.510091);「); 我確實接受..謝謝:) – ukama

+0

如果你想插入到數據庫中,只需在你的活動中調用insertContact方法即可。像很長的東西insertGPS = userAdapter.insertContact(LATITUDE,LONGITUDE);.特定的行initialValues.put負責插入數據庫。你不需要使用這個db.execSQL(「INSERT INTO」+ DATABASE_TABLE +「(_id,latitude,longitude)」+「VALUES(0,12.047838,20.510091);記住要正確打開和關閉數據庫。你正在向數據庫中插入一長串值,最好的辦法是使用異步任務,這將使你的應用程序更快。 – Vinoth