Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
5
Добавлен:
17.04.2019
Размер:
261.63 Кб
Скачать

Доступ до баз даних

Java надає доступ до баз даних з допомогою інтерфейсу JDBS. Даний інтерфейс за своєю суттю нагадує інтерфейс ODBC. Пакет JDBC призначений для роботи з різноманітними диспетчерами СУБД. Для підключення до бази даних середовище виконання java повинна завантажити відповідний драйвер СУБД в оперативну пам'ять. Завантаження драйверів в ОП здійснюється з допомогою драйвера DriverMessage. В загальному випадку робота програми СУБД має наступний вигляд:

Розглянемо кроки, які необхідні для того, щоб обробити деякий SQL запит:

  1. завантаження та реєстрація JDBC драйвера

  2. формування JDBC-URL рядка

  3. отримання екземпляру об’єкту класу Conection

  4. формування SQL запиту

  5. виконання та обробка результатів запиту

  6. закриття з’єднань та звільнення пам’яті

Завантаження та реєстрація JDBС драйвера. Драйвери JDBC зазвичай створюються постачальниками СУБД. Їх робота полягає в обробці JDBC підключень і команд, що поступають від java програм, а також генерування машинно-залежних викликів по відношенню до даної СУБД. Однак далеко не всі виробники СУБД пропонують свої драйвери JDBC, однак як правило з ними завжди поставляються драйвери стандарту ODBC, тому підключення java програм в ОС Windows спрощено. Якщо драйвер все таки відсутній, то необхідно його скачати і встановити в ODBC менеджері. Тоді підключення програм буде здійснюватись з допомогою JDBC-ODBC мостах. При реєстрації драйвера JDBC-ODBC моста у вас повинно бути:

1). Jar файл з драйвером. Він повинен бути підключений в змінну Class.path

2). Ви повинні знати назву класу драйвера. Як правило в середині jar архіву буде розміщено деякий текстовий файл в якому буде наведено назву класу драйвера, приклади підключень та інші.

3). Якщо ж файлу нема, то вам необхідно здійснити пошук класу під назвою: «Driver.class» в середині архіву і по вкладеності каталогу відновити назву класу. Після цього необхідно зареєструвати клас в ОС:

String driver = “Sun.ada.jdbcАdaDriver”;

Try{

Class forname(driver).newInstance();

DriverManager.register.Driver((Driver)class.forname(Array)newInstance));

Cath(Exception e){}

Формування JDBC-URL рядочка. В загальному випадку JDBC-URL рядочок має такий вигляд: JDBC.id_бази: параметри. Приклад:

Jdbc:postgresql: //127.0.0.1/a21? User = root;

Необхідно звернути увагу на особливості формування JDBC-URL рядка. Рекомендація не забивати жорстко логін та пароль в середині JDBC-URL рядка.

4). Отримання екземпляра класу Conection. Для отримання даного класу необхідно звернутися до класу DriverConection. Приклад:

String url = “jdbc:pathgresql.//127.0.0.1/a21”;

Array user = “ ”;

String path = “ ”;

Connection C = null;

Try{

C = DriverManager.get.connection(url,… )} cath

…..

}

5).Формування SQL запитів: на даному етапі необхідно сформувати простий рядок, який буде містити SQL запит до даної СУБД.

Виконання та обробка SQL запитів. Для виконання запиту нам необхідно з класу Conection отримати екземпляр класу Statement, а потім використавши метод цього классу виконати запити. В середині класу Statement визначені наступні методи:

6).Public int executUplate(String sql)

Даний метод використовується для SQL команд типу Insert, abdate, delete. Даний метод повертає кількість рядочків, які були змінені даною командою.

Public ResultSet executeQuerry(…);

Використовується в основному для команди Select. Отриманий в результаті роботи команди об’єкт ResultSoft являє собою елементарну таблицю.

Public vvv execute(String …);

Даний метод повертає true або false. Виконався запит чи ні. Застосовується в тих випадках, коли запит повертає декілька об’єктів.

Приклад:

String sql = “Select * From clud”;

Statement stm = execute Statement();

ResultSetMetaData rsmd = rs.getMetaData();

Int ls = rsmd.getCollumnCount();

While (rs.next()){

String val = rs.getString(1);

}

Нюанс: запам’ятати при отримані результату запиту, позиція курсора в середині результату знаходиться перед першим рядком результату.

Для переходу до самого результату необхідно хоча б один раз зробити виклих методу next об’єкту resultSet. Після зсуву курсору на рядочок результату можна звертатись до стовпців результату за допомогою індексі String val = rs.getString(1); - до першого стовпця. В середині ResultSet результат буде тип String. Тому для отримання спеціалізованих типів ці дані необхідно привести до даного результату. Якщо результат в середині даного стовпчика має чітко визначений тип, то можна одразу отримати результат даного типу. Наприклад:

Int val2 = rs.getInt();

Закриття з’єднань та звільнення пам’яті. Після того як всі необхідні дії з базою даних виконані необхідно закрити з’єднання та звільнити використовувану пам’ять. При цьому звільнення пам’яті потребують об’єкти: ResultSetMetaData, ResultSet, Statement. Крім звільнення об’єктів необхідно закрити Conect до бази даних, для цього викликається метод close() об’єкту Conection. В більшості СУБД існує обмеження на кількість одночасних з’єднань з базою даних. Це передбачено ліцензією. Тому, якщо не правильно закривати з’єднання з базою даних, то може відбутись ситуація, коли кількість з’єднання з базою даних рівна кількості ліцензій, при цьому нове з’єднання не встановлюється.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]