存储浮点数作为字符串中的Android数据库

问题描述:

所以我有一个应用程序,我把任意字符串在数据库中,以后提取出来是这样的:存储浮点数作为字符串中的Android数据库

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)); 
+0

getDouble实际上给你你想要的结果吗?数据库中的列是什么类型? – vickirk 2010-04-27 07:29:16

+0

是的,getDouble返回正确的结果。该列是字符串。 – pgsandstrom 2010-04-27 07:36:28

嗯,我解决我自己的问题。问题出在我创建表时使用“字符串”,而不是“文本”(这似乎是varchar的sqlite等价)。这是因为sqlite可以接受任何类型,但是可以在http://www.sqlite.org/datatype3.html“2.1确定列相似性”下阅读:

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

所以没有被识别的类型是数字...所以我的“字符串”型是数字。尔加!