我使用下面的代碼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值的字符串,反之亦然,並請告訴我,如果這個解決方案的工作
編輯:
什麼是您的表格架構? (雖然SQLite在某些情況下使用「類型關聯」,但數據類型很重要。) – Sam
如何獲取模式?以及如何解決這個問題? –
「模式」只是您的「CREATE TABLE」語句,請張貼這些。 – Sam