Intereting Posts
Папка значений Android для Nexus 6 Android Fragment объявлен в макете, как установить аргументы? Слишком много ссылок на методы в проекте библиотеки Android – ClassNotFoundException NodeJS + SocketIO нажатие на Mobile App Изменение размера изображения JPEG в файловой системе Java.lang.RuntimeException: выполнение остановки активности, которая не возобновляется в android Android 5.1.1 lollipop возвращает пустой путь к файлу, если изображение выбрано из галереи Как установить прозрачный фон для кнопки изображения в коде? Хороший пользовательский интерфейс для Android Создать группу контактов gmail в android Восстановить стек приложений Android с фона Подождите, пока вид не станет видимым с IdleResource Android ExpandableListView с флажком, контроль состояния проверки Активность ребенка, запущенная из уведомления, не возвращается к родительской навигации Существует ли API для Android Kitkat (4.4), новая функция Caller ID?

Обозначение индекса столбца SQLite создает таблицу

Это запрос, который я использую для создания таблицы

create table site_table( _id integer primary key autoincrement, name_site text, url text, login text, pass text ); 

Я назвал Cursor.getColumnNames() и заметил, что порядок столбцов – это id, login, pass, name, url .

Итак, если мне нужно значение, я должен получить его по индексу Cursor.getString(index) . До тех пор, пока я не отлаживался, я испортил вызов неправильного индекса, но теперь мне интересно, почему SQLite экономит этот путь? Почему это не соответствует тому, что я создал id, name_site, url, login and pass ?

благодаря

Итак, если я хочу значение, я должен получить его по индексу Cursor.getString (index)

Так, например, по этой причине вы всегда должны использовать

 c.getString(c.getColumnIndex("ColName")); // or better getColumnIndex(CONSTANT) 

Этот метод спасает всех нас и гарантирует, что вы никогда не получите неправильные результаты. Как правило, этот метод рекомендуется, а также сохранение COLUMN_NAMES качестве CONSTANTS в отдельном классе – очень, очень полезная и эффективная практика.

Примечание: порядок зависит от проекции, т. select name, lastname from table

Эти данные упорядочиваются по заказу, который вы запросили в запросе, а не в том порядке, в котором вы создали таблицу. Таким образом, вы, вероятно, изменили порядок в запросе, который сгенерировал указанный курсор.

Порядок столбцов в вашем курсе зависит от проекции. Чтобы убедиться, что вы используете правильный индекс столбца, используйте c.getString(c.getColumnIndexOrThrow("COLUMN_NAME")) где c – ваш курсор.

Я просто сделал опыт из первых рук:

Индексы столбцов курсора в результате

SELECT * FROM mytable WHERE …

Запрос иногда (не всегда) отличается от того, что браузер SQLITE Database Browser показывает как порядок столбцов на вкладке Структура базы данных. Поэтому ссылки на столбцы с помощью getColumnIndex кажутся единственным безопасным способом.