2014-04-26 46 views
1

我試圖在一個Android應用程序的SQLite數據庫中的經度和緯度存儲位置。我能夠存儲位置的名稱,位置的地址,SSID和密碼,但經度和緯度似乎始終存儲爲0.Android SQLite存儲緯度和長度爲0

我知道它試圖將值寫入數據庫正確,但是在這個階段和檢索他們之間的事情是不對的。

這是我的表的定義,我正在使用REAL數據類型痛苦經緯度 - 這是正確的嗎?

private static final String DATABASE_CREATE = "create table " 
     + INFO_TABLE + " (" + COLUMN_NAME + " TEXT PRIMARY KEY NOT NULL, " 
     + COLUMN_ADDRESS + " TEXT, " 
     + COLUMN_LAT + " REAL, " 
     + COLUMN_LONG + " REAL, " 
     + COLUMN_SSID + " TEXT, " 
     + COLUMN_PASSWORD + " TEXT);"; 

並輸入數據的部分,在這一點上「值」是包含一個列表中選擇正確lat和長:

public Info enterInfo(String name, String address, double lat, double lng, String ssid, String password){ 
    ContentValues values = new ContentValues(); 
    values.put(SQLiteHelper.COLUMN_NAME, name); 
    values.put(SQLiteHelper.COLUMN_ADDRESS, address); 
    values.put(SQLiteHelper.COLUMN_LAT, lat); 
    values.put(SQLiteHelper.COLUMN_LONG, lng); 
    values.put(SQLiteHelper.COLUMN_SSID, ssid); 
    values.put(SQLiteHelper.COLUMN_PASSWORD, password); 

    long insertId = database.insert(SQLiteHelper.INFO_TABLE, null, values); 
} 

最後這就是被讀取創建的列表由於(cursor.isAfterLast()!)可能走出循環的早期的同時

public List<Info> getAllInfo(){ 
    List<Info> infos = new ArrayList<Info>(); 

    Cursor cursor = database.query(SQLiteHelper.INFO_TABLE, allColumns, null,null,null,null,null); 

    cursor.moveToFirst(); 
    while(!cursor.isAfterLast()){ 
     Info info = cursorToInfo(cursor); 
     infos.add(info); 
     cursor.moveToNext(); 
    } 
    //Close the cursor 
    cursor.close(); 
    return infos; 
} 

不知道也許是:數據庫,這裏的值是0?或者cursorToInfo中的toString?對於cursorToInfo(光標)的代碼是:

private Info cursorToInfo(Cursor cursor){ 
    Info info = new Info(); 
    info.setName(cursor.getString(0)); 
    return info; 
} 

回答

2

cursorToInfo()僅檢索第一列的值,在光標丟棄任何其它可能的列。 Java對象字段默認初始化爲零/空值,這就解釋了爲什麼沒有明確設置的字段出現爲零。

+0

現貨,解決了它謝謝 – pietomb