【发布时间】:2010-04-27 07:25:09
【问题描述】:
所以我有一个应用程序,我将任意字符串放入数据库中,然后像这样提取它们:
Cursor DBresult = myDatabase.query(false, Constant.DATABASE_NOTES_TABLE_NAME,
new String[] {"myStuff"}, where, null, null, null, null, null);
DBresult.getString(0);
这在所有情况下都可以正常工作,除非字符串看起来像浮点数,例如“221.123123123”。将其保存到数据库后,我可以将数据库提取到我的计算机并使用 DB-viewer 查看它,保存的数字是正确的。但是,当使用 cursor.getString() 时,会返回字符串“221.123”。我一生都无法理解如何防止这种情况发生。我想我可以在每个字符串上做一个 cursor.getDouble() 来看看这是否会产生更好的结果,但这感觉太丑陋和低效了。有什么建议吗?
干杯,
编辑:我刚刚做了一个小测试程序。该程序打印“结果:123.123”,当我希望它打印“结果:123.123123123”时
SQLiteDatabase database = openOrCreateDatabase("databas", Context.MODE_PRIVATE, null);
database.execSQL("create table if not exists tabell (nyckel string primary key);");
ContentValues value = new ContentValues();
value.put("nyckel", "123.123123123");
database.insert("tabell", null, value);
Cursor result = database.query("tabell", new String[]{"nyckel"}, null, null, null, null, null);
result.moveToFirst();
Log.d("TAG","result: " + result.getString(0));
【问题讨论】:
-
getDouble 真的能给你想要的结果吗?数据库中的列是什么类型的?
-
是的,getDouble 返回正确的结果。列是字符串。