2012-02-08 2 views
7

Я пытаюсь сохранить значения валюты в базе данных sqlite в android. Я не думаю, что здесь будет использоваться int. Я слышал, что можно использовать Bigdecimal. Если кто-нибудь скажет мне, как он должен использоваться для отправки значений в базу данных sqlite.Сохранение валюты в базе данных Android SQlite

ответ

11

Храните BigDecimal как строку.

Вы можете использовать метод toPlainString().

BigDecimal b = new BigDecimal(); 
String s = b.toPlainString(); 

Тогда, когда вы вытаскиваете его из базы данных, вы можете создать новый BigDecimal.

BigDecimal c = new BigDecimal(String s) 

Верьте или нет. SQLite 3.0 хранит все типы данных в виде строк, даже если вы говорите, что это должен быть Integer. Посмотрите на this web page from the official SQLite website и прокрутите вниз до раздела «Манифест ввода и поддержки BLOB». В нем говорится о том, как он позволит вам хранить строки в столбцах других типов.

+0

Я вам не верю: SQLite 3.0 хранит целые числа в виде целых чисел. Это была старая версия 2.8, которая хранила все как строки. – Jeff

+0

Это просто неправильно. Перейдите на сайт (я только что установил ссылку) и выполните поиск: Разница в том, что SQLite 3.0 все равно сохранит данные, даже если преобразование формата невозможно. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

Вы также должны включить предыдущее предложение с этой страницы: «Когда данные вставляются в столбец, этот столбец попытается преобразовать формат данных в объявленный тип столбца». Когда вы объявляете столбец Integer и сохраняете в нем строку «12345», SQLite преобразует эту строку в целое число и сохраняет ее как целое. – Jeff

0

Просто используйте Int здесь. Поскольку SQlite использует 8 байтов для int, максимальные значения равны 2^64, что равно 1,8446744e + 19 - 1, более или менее 10 18, что достаточно велико для валюты.

Также мы

Смежные вопросы