Вставка інформації в базу даних в Android додатку

Пропозиція SQL INSERT використовується щоразу, коли ви хочете вставити інформацію в базу даних SQL Пропозиція INSERT відповідає операції «створити» в методології CRUD

У додатку MJAndroid користувач може додавати вакансії в список, клацаючи на елементі меню Add Item (Додати елемент) при перегляді списку вакансій Потім користувач може заповнити форму, в якій вказує роботодавця, назву вакансії і її опис Після того як користувач натисне у формі кнопку Add Job (Додати вакансію), виконається наступний рядок коду:

Цей код викликає функцію addJob, передаючи ID роботодавця, назву вакансії і опис роботи Функція addJob виконує всю роботу по запису вакансії в базу даних

Використання методу insert У наступному прикладі демонструється використання методу insert:

Пояснення до коду наступні

Обєкт ContentValues ​​відображає імена стовпців на значення стовпців Усередині системи він реалізується як HashMap Однак на відміну від звичайних 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 для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*