Хранение чисел с плавающей точкой в ​​виде строк в базе данных Android - PullRequest
1 голос
/ 27 апреля 2010

Итак, у меня есть приложение, в которое я помещаю произвольные строки в базу данных, а затем извлекаю их следующим образом:

Cursor DBresult = myDatabase.query(false, Constant.DATABASE_NOTES_TABLE_NAME, 
            new String[] {"myStuff"}, where, null, null, null, null, null);
DBresult.getString(0);

Это прекрасно работает во всех случаях, кроме случаев, когда строка выглядит как число с плавающей запятой, например "221.123123123". После сохранения в базе данных я могу извлечь базу данных на свой компьютер и просмотреть ее с помощью средства просмотра БД, и сохраненный номер правильный. Однако при использовании cursor.getString () возвращается строка «221.123». Я не могу на всю жизнь понять, как я могу предотвратить это. Я думаю, что я мог бы сделать cursor.getDouble () для каждой отдельной строки, чтобы видеть, дает ли это лучший результат, но это кажется уродливым и неэффективным Есть предложения?

Приветствия

edit: я только что сделал небольшую тестовую программу. Эта программа печатает «результат: 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 Ответ

3 голосов
/ 27 апреля 2010

Ну, я решил свой вопрос. Проблема возникает из-за того, что я использую «строку» при создании таблицы, а не «текст» (что похоже на sqlite-эквивалентность varchar). Это связано с тем, что sqlite принимает любой тип, но его можно прочитать в http://www.sqlite.org/datatype3.html «2.1 Определение соответствия столбцов»:

"# В противном случае родство ЧИСЛО."

Таким образом, тип, который не распознан, является числовым ... поэтому мой тип "string" является числовым. Г!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...