【发布时间】:2012-12-27 01:22:10
【问题描述】:
我正在使用以下代码
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 Double Value)
现在通常是这样的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。在我的应用程序中,我需要精确的存储内容。这是什么行为,我该如何解决?
【问题讨论】:
-
你的表架构是什么? (虽然 SQLite 在某些情况下使用“类型关联”,但数据类型很重要。)
-
如何获取架构?以及如何解决这个问题?
-
“架构”只是您的
CREATE TABLE声明,请发布这些。 -
CREATE TABLE TTArea (_id INTEGER PRIMARY KEY、经度字符串、纬度字符串等
-
是的,我不知道为什么它没有显示,但我认为当我从 STRING 更改为 TEXT 时它已解决
标签: java android eclipse sqlite