Установка поля _ID с помощью SQLite & ContentProvider в Android - PullRequest
1 голос
/ 11 марта 2011

Я пытаюсь настроить ContentProvider в приложении Android для хранения информации о домах.Я хотел бы иметь возможность установить поле _ID таким же, как поле идентификатора в моей внешней базе данных (программа синхронизирует ContentProvider с этой внешней базой данных).

Причина в том, что яхотел бы иметь возможность ссылаться на идентификатор, например:

content://com.example.acme.propertyprovider/properties/23

, где 23 - это один и тот же идентификатор как во внешней, так и во внутренней базе данных.

Следующее просто вызывает ошибку ".database.SQLException: не удалось вставить строку в содержимое: //com.example.acme.propertyprovider/properties

ContentValues values = new ContentValues();

values.put(Properties._ID, 23);
values.put(Properties.COLUMN_NAME_ROAD, "123 Sample Property");
values.put(Properties.COLUMN_NAME_RENT, 320);

getContentResolver().insert(Properties.CONTENT_URI, values);

1 Ответ

1 голос
/ 11 марта 2011

Вам лучше установить внешний ключ в базе данных Android для хранения идентификатора из вашей внешней базы данных. Тогда вам не нужно беспокоиться о том, что вещи не синхронизированы. Поскольку поля _ID автоматически увеличиваются, вы создадите для себя кошмар.

Добавьте что-то вроде extHouse_id (или что-то еще). Это очень распространенная практика.

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