如果我啓動我的android應用程序,應用程序會從數據庫調用一些數據並將此數據保存在設備上的本地SQL數據庫中。有一個數字很大,所以我需要BigInteger來存儲它。如果我嘗試調用來自本地數據庫那個值,我得到的錯誤:來自SQL數據庫的BigInteger值格式錯誤
java.lang.NumberFormatException: Invalid BigInteger: 3.23431e+23
這是我如何存儲在本地分貝值:
...
values.put(BatteryEntryContract.BatteryEntry.COLUMN_NAME_SERVICE_TAG, String.valueOf(battery.get(i).getServiceTag()));
...
db.insert(BatteryEntryContract.BatteryEntry.TABLE_NAME_BATTERY, null, values);
這是我如何把它從本地DB:
...
String serviceTagValue = cursor.getString(
cursor.getColumnIndexOrThrow(BatteryEntryContract.BatteryEntry.COLUMN_NAME_SERVICE_TAG));
batteryFromDb.setServiceTag(new BigInteger(serviceTagValue));
...
我一定像我在全長獲得,而不是與... E + 23的方式,一種特殊的方式來格式化從數據庫中的價值?
編輯: 這是怎樣的列類型將設置:
...
BatteryEntry.COLUMN_NAME_SERVICE_TAG + " TEXT DEFAULT 0," +
....
當我嘗試
...
values.put(BatteryEntryContract.BatteryEntry.COLUMN_NAME_SERVICE_TAG,
String.valueOf(battery.get(i).getServiceTag()));
...
Log.i("---",values+"");
db.insert(BatteryEntryContract.BatteryEntry.TABLE_NAME_BATTERY, null, values);
外部DB的值保存爲numeric(24,0)
當我得到它從那裏我將它保存爲本地數據庫中的字符串。當我做Log.i("---",values+"");
( 「值」 將在本地數據庫保存)的數量會顯示正確的:
.... serviceTag=323431303230313631333331 ....
'無效的BigInteger:3.23431e + 23 '因爲'3.23431e + 23'是一個數字的**字符串表示**。 –
但是,我怎樣才能調用BigInt值? cursor.getBigInt不可能 – WeSt
只需使用'cursor.getLong()' –