Android SQLite从数据库中获取很长时间

时间:2013-08-28 18:48:01

标签: android sqlite android-sqlite

我正试图从数据库中获得两个浮点数(纬度和经度)。我知道他们写得正确是因为我在一个应用程序中打开了数据库,它说这两个值是42.9512和-83.4225(我选择添加的一个随机位置)。

我最初在我的db类中的一个方法中将两个值都作为一个包返回,但是也创建了一个只返回纬度的方法(只是为了测试它是否可行):

    public long getLat(long l) throws SQLException {
        String[] cols = new String[]{KEY_ROWID,KEY_ADDRESS,KEY_LATITUDE,KEY_LONGITUDE};
        Cursor c = ourDB.query(DATABASE_TABLE, cols, KEY_ROWID + "=" + l, null, null, null, null);
        if(c != null) {
            c.moveToFirst();
            long lat = c.getLong(2); //latitude column
        return lat;         
        }
        return 0l;
    }

返回此值的类是我的类,它显示所有数据库内容(lat / long除外)。这是代码的一部分:

    Bundle favLoc = temp.getLatLng(rowID);
    long lat = temp.getLat(rowID);      
    long lng = favLoc.getLong("lng");
    Toast.makeText(SQLView.this, "Row id: " + rowID + "\nlat: " + lat + "\nlng: " + lng, Toast.LENGTH_LONG).show();
    Intent i = new Intent("com.blah.blah.MAINACTIVITY");
    i.putExtras(favLoc);
    setResult(RESULT_OK, i);
    finish();   
    break;

temp是我的DBHelper类的一个实例。我尝试从Bundle获取long值,但我稍微更改了代码以尝试使用我专门为lat值创建的新方法获取lat值。 我使用toast作为调试工具来显示值。

由于某种原因,打印输出值总是打印为int而不是浮点数 - 因此lat打印为42而不是42.9512,而lng打印为-83而不是-83.4225。

我似乎无法理解为什么会这样。如果有人能帮助我解决这个问题,我们将不胜感激。

1 个答案:

答案 0 :(得分:3)

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

long是一个64位整数类型,这就是你获得舍入值的原因。

如果要获取浮点值,请使用floatdouble。 (首选double)。