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();

Макс. кол колонок в TABLE: (результат 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, путь к базе: HJava_FB.

Statement

Объект Statement нужен для выполнения запросов. Простейший метод получения объекта:

Как выполнить запрос к базе данных?

Если предполагается, что запрос вернёт выборку данных, то запрос можно выполнить методом executeQuery:

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

И что теперь делать с полученным объектом ResultSet rs? Выбрать из него данные, вот так:

В этом примере получаем из базы данных всего одну строку из таблицы Parameters. Далее находим количество колонок в выборке:

int columns = rsmetadata.getColumnCount();

В цикле while (rs.next()) получаем очередную строку из выборки, в нашем примере это будет только одна строка. Получив строку, перебираем элементы этой строки в цикле

и полученные элементы устанавливаем в вектор vParameters.

Почему в цикле for отсчёт идёт с 1, а не с нуля, как обычно? В выборке типа ResultSet отсчёт строк и столбцов ведут с 1.

Как ввести новую строку в таблицу базы данных?

Можно так: