2010-04-27 104 views
1

所以我有一個應用程序,我把任意字符串在數據庫中,以後提取出來是這樣的:存儲浮點數作爲字符串中的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

回答

3

嗯,我解決我自己的問題。問題出在我創建表時使用「字符串」,而不是「文本」(這似乎是varchar的sqlite等價)。這是因爲sqlite可以接受任何類型,但是可以在http://www.sqlite.org/datatype3.html「2.1確定列相似性」下閱讀:

「#否則,親和性是NUMERIC。」

所以沒有被識別的類型是數字...所以我的「字符串」型是數字。爾加!

相關問題