Главная » Разработка для Android » Вставка информации в базу данных в Android приложении

0

Предложение SQL INSERT используется всякий раз, когда вы хотите вставить информацию в базу данных SQL. Предложение INSERT соответствует операции «создать» в методологии CRUD.

В приложении MJAndroid пользователь может добавлять вакансии в список, щелкая на элементе меню Add Item (Добавить элемент) при просмотре списка вакансий. Затем пользователь может заполнить форму, в которой указывает работодателя, название вакансии и ее описание. После того как пользователь нажмет в форме кнопку Add Job (Добавить вакансию), выполнится следующая строка кода:

Этот код вызывает функцию addJob, передавая ID работодателя, название вакансии и описание работы. Функция addJob выполняет всю работу по записи вакансии в базу данных.

Использование метода insert. В следующем примере демонстрируется использование метода insert:

Пояснения к коду следующие.

Объект ContentValues отображает имена столбцов на значения столбцов. Внутри системы он реализуется как HashMap<String, Object>. Однако в отличие от обычных HashMap ContentVal ues обладает строгой типизацией. Можно указать тип данных для каждого значения, сохраненного в контейнере ContentVal ues. Когда вы получаете значения обратно, ContentVal ues автоматически преобразует значения в требуемый тип, если это возможно.

Второй параметр метода і nsert – null Col umnHack. Он используется только в качестве значения по умолчанию, когда третий параметр (ассоциативный контейнер, тар) равен null, следовательно, в отсутствие значения по умолчанию строка будет совершенно пуста.

Использование метода execSQL. Данное решение является более низкоуровневым, чем решение с методом іnsert. Здесь создается SQL, и этот код отправляется для исполнения в библиотеку. Хотя можно жестко закодировать все предложения, в том числе данные, передаваемые пользователем, мы продемонстрируем предпочтительный метод, при котором задействуются параметры связывания (bind parameters).

Параметр связывания обозначается знаком ?, который занимает место в предложении SQL, обычно там, где должен стоять параметр, переданный пользователем, например значение в условии WHERE. После создания предложения SQL с параметрами связывания его можно использовать многократно, задавая точное значение параметров связывания всякий раз перед тем, как выполнить это предложение:

Рассмотрим пояснения к коду.

Построение шаблона SQL-запроса под названием sql, содержащего пригодные для связывания параметры, которые будут заполняться пользовательскими данными. Параметры, пригодные для связывания, обозначаются в строке знаком ?.

Далее мы строим массив объектов под названием bindArgs, в котором содержится по объекту на каждый элемент нашего SQL-шаблона. В шаблоне три вопросительных знака, поэтому в массиве объектов должно быть три элемента.

Выполнение команды SQL путем передачи строки шаблона SQL и аргументов связывания к execSQL.

Применение шаблона SQL и аргументов связывания – более предпочтительный способ по сравнению с построением предложения SQL со всеми параметрами в виде String или StringBuilder. При использовании шаблона с параметрами вы защищаете свое приложение от внедрения (инъекции) SQL-кода. Такие атаки происходят, когда пользователь-злоумышленник пытается ввести информацию в форму и эта информация намеренно предназначена для изменения базы данных таким способом, которого не предусматривал разработчик. Как правило, для этого взломщики вводят синтаксические символы, чтобы преждевременно завершить команду SQL, выполняемую в настоящий момент, и сразу за ними вводят в поле формы новые команды SQL. Кроме того, подход «шаблон-плюс-параметры» защищает вас и от рядовых ошибок, например от попадания неверных символов в параметры. К тому же такой подход помогает держать код более чистым и не вводить длинные последовательности прикрепляемых вручную строк, автоматически заменяя вопросительные знаки.

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

  • Комментарии