将浮点数存储为android数据库中的字符串

时间:2010-04-27 07:25:10

标签: android sqlite

所以我有一个应用程序,我在数据库中放置任意字符串,然后像这样提取它们:

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查看器查看它,并且保存的数字是正确的。但是,使用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));

1 个答案:

答案 0 :(得分:3)

好吧,我解决了自己的问题。问题来自于我在创建表时使用“string”而不是“text”(这似乎是varchar的sqlite等价)。这是因为sqlite接受任何类型,但可以在http://www.sqlite.org/datatype3.html“2.1柱子亲和力的确定”下阅读:

“#否则,亲和力是NUMERIC。”

因此,无法识别的类型是数字...所以我的“字符串”类型是数字。尔加!