JDBC приклади

DatabaseMetaData

Методи інтерфейсу DatabaseMetaData дозволяють отримати інформацію про бази даних. Отримати об'єкт DatabaseMetaData metaData можна так:

У прикладі baza.getConnection має тип Connection.

Тепер отримаємо відомості про бази даних, у прикладі мова йде про Firebird (роботу з Firebird див. у статті JDBC), але можна досліджувати і іншу базу. До речі, про роботу з блоком try/catch можна прочитати в статті Exception.
Отже, інформація про базу даних.
Назва сервера бази:

metaData.getDatabaseProductName();

Версія сервера:

metaData.getDatabaseProductVersion();

Ім'я драйвера :

metaData.getDriverName();

Версія драйвера :

metaData.getDriverVersion();

Користувач :

metaData.getUserName();

Типи таблиць:

Таблиці : отримати ім'я і опис (description) таблиці PARAMETER:

Матем. функції :

metaData.getNumericFunctions();

Рядкові функції :

metaData.getStringFunctions();

Системні функції :

metaData.getSystemFunctions();

Дата/Час функції :

metaData.getTimeDateFunctions();

Символи імен, крім стандартних :

metaData.getExtraNameCharacters();

Термін "схема" :

metaData.getSchemaTerm();

Термін "процедура" :

metaData.getProcedureTerm();

Термін для "каталог" :

metaData.getCatalogTerm();

Макс. довжина імені колонки : (результат 31)

metaData.getMaxColumnNameLength();

Макс. довжина імені процедури : (результат 31)

metaData.getMaxProcedureNameLength();

Макс. довжина імені таблиці : (результат 31)

metaData.getMaxTableNameLength();

Макс. кількість колонок в SELECT : (результат = 0, тобто there is no limit or the limit is not known)

int count = metaData.getMaxColumnsInSelect();

Макс. довжина SQL запитів : (результат = 0, тобто there is no limit or the limit is not known)

count = metaData.getMaxStatementLength();

Макс. кількість колонок в ТАБЛИЦІ : (результат 32767)

metaData.getMaxColumnsInTable();

Макс. кількість одночасних з'єднань з базою : (результат = 0, тобто there is no limit or the limit is not known)

count = metaData.getMaxConnections();

Отримуємо: DatabaseMetaData

Вгору

Як з'єднатися з базою даних?

Ось так:

Class.forName(driver);
Connection con = DriverManager.getConnection(url, login, pass);

тип всіх аргументів String.

Приклад для FireBird:

Тут єднаємося з базою TUTORIAL.FDB, шлях до базі: H\Java_FB.

Statement

Об'єкт Statement потрібен для виконання запитів. Найпростіший метод отримання об'єкта:

Як виконати запит до бази даних?

Якщо передбачається, що запит поверне вибірку даних, запит можна виконати методом executeQuery:

Statement st = con.createStatement();
ResultSet rs = st.executeQuery ("SELECT * FROM PARAMETERS);

І що тепер робити з отриманим об'єктом ResultSet rs? Вибрати з нього дані, ось так:

У цьому прикладі отримуємо з бази даних всього один рядок з таблиці параметрів. Далі знаходимо кількість колонок у вибірці:

int columns = rsmetadata.getColumnCount();

В циклі while (rs.next()) отримуємо чергову рядок з вибірки, в нашому прикладі це буде тільки один рядок. Отримавши рядок, перебираємо елементи цього рядка в циклі

і отримані елементи встановлюємо вектор vParameters.

Чому в циклі for відлік йде з 1, а не з нуля, як зазвичай? У вибірці типу ResultSet відлік рядків і стовпців ведуть з 1.

Вгору

Як ввести новий рядок у таблицю бази даних?

Можна так: