2013-01-12 43 views
0

我使用下面的代碼SQLite數據庫不存儲雙值作爲字符串

 public boolean addArea(AreaClass area , ArrayList<AreaMarkClass> areaArray) 
    {  
     area.id = getNextAreaId(); 
     Log.d("longitude", area.longitude); 
     Log.d("latitude", area.latitude); 

     ContentValues initialValues = new ContentValues(); 
     initialValues.put("_id", area.id); 
     initialValues.put("name", area.name); 
     initialValues.put("longitude", area.longitude); 
     initialValues.put("latitude", area.latitude); 
     initialValues.put("zoomLevel", area.zoomLevel); 
     initialValues.put("creationDate",area.creationDate); 

     try 
     { 
      mDb.insertOrThrow("TTArea", null, initialValues); 
} 

area.longitude是一個字符串由String.value(A雙重價值)獲得其值 現在,它通常是這樣的22.323434523464563456

然而

當我嘗試檢索此值

public AreaClass getAreaClassWithAreaId(Integer id) 
{ 
    String queryString = "SELECT * FROM TTArea WHERE _id = ?"; 
    Cursor resultSet = mDb.rawQuery(queryString, new String[]{id.toString()}); 
    AreaClass area = new AreaClass(); 
    while(resultSet.moveToNext()) 
    { 
     area = new AreaClass(
         resultSet.getInt(resultSet.getColumnIndex("_id")), 
         resultSet.getString(resultSet.getColumnIndex("name")), 
         resultSet.getString(resultSet.getColumnIndex("longitude")), 
         resultSet.getString(resultSet.getColumnIndex("latitude")), 
         resultSet.getString(resultSet.getColumnIndex("zoomLevel")), 
         resultSet.getString(resultSet.getColumnIndex("creationDate")) 
         ); 
    } 

    resultSet.close(); 
    return area; 
} 

它在某種程度上它四捨五入到22.3234。在我的應用程序中,我需要精確的存儲。這是什麼行爲,我該如何解決這個問題?

public static Double stringToDouble (String x) 
{ 
    if (x !=null) 
     return Double.parseDouble(x); 

    return null; 
} 

public static String doubleToString (Double y) 
{ 
    if (y != null) 
     return String.valueOf(y); 

    return null; 
} 

當添加到數據庫改造double值的字符串,反之亦然,並請告訴我,如果這個解決方案的工作

編輯:

+2

什麼是您的表格架構? (雖然SQLite在某些情況下使用「類型關聯」,但數據類型很重要。) – Sam

+0

如何獲取模式?以及如何解決這個問題? –

+1

「模式」只是您的「CREATE TABLE」語句,請張貼這些。 – Sam

回答

2

我使用SQLite工作時,使用這些方法的解決方案在評論中: 「我看到你用STRING字段創建了你的表,你可以用TEXT類型嘗試,適合我。」

+0

my area.longitude is STRING .... –

+1

我看到您使用STRING字段創建了表格,您可以使用TEXT類型,適用於我。 –

+0

與TEXT Thansk mate合作 –

相關問題