Использование JDBC
Использование JDBC 363
В листинге 12.7 класс ResultSetMetaData используется для получения имени и типа данных первого поля объекта ResultSet с именем rs. Программа является логическим продолжением листинга 12.4, в котором был создан объект rs.
Даже если отвлечься от соображений эффективности, механизм PreparedStatement гораздо надежнее подготовки нескольких команд в объектах Statement.
Листинг 12.7. Использование объекта ResultSetMetaData.
ResultSetMetaData rsmd – null: try { rsmd = rs.getMetaData(): } catch (SQLException se) { System.out.printlnC'We got an exception while getting the metadata:" + "check the connection."): se.printStackTrace(); System.exit(l): } String columnName = null. columnType = null: try { columnName = rsmd.getColumnName(1): columnType – rsmd.getColumnTypeName(l): } catch (SQLException se) { System.out.printlnC'We got an exception while getting the column name:" + "check the connection."): se.printStackTrace(): System.exit(l): } System.out.printC'The name of the first column is: '"): System.out.print(columnName); System.out.printlrK…..): System.out.printC'The data type of the first column is: "): System.out.println(columnType):
Класс ResultSetMetaData содержит много других полезных методов. Описания приведены в документации JDK API.
DatabaseMetaData
Наконец, класс DatabaseMetaData предназначен для получения информации о базе данных, с которой вы работаете. В частности, он позволяет получить ответ па перечисленные ниже вопросы.
- Какие каталоги присутствуют в базе данных?
- С каким типом базы я работаю?
- Под каким именем пользователя я работаю с базой данных?
В листинге 12.8 объект DatabaseMetaData используется для получения у драйвера JDBC имени пользователя, с которым было создано подключение, и URL-адреса базы данных.
Листинг 12.8. Использование объекта DatabaseMetaData.
DatabaseMetaData dbmd = null: try { dbmd = c.getMetaData(): } catch (SQLException se) { System.out.printlnC'We got an exception while getting the metadata:" + " check the connection."): se.printStackTrace(): System.exit(l): } String username = null: try { username = dbmd.getUserName(): } catch (SQLException se) { System.out.printlnC'We got an exception while getting the username:" + "check the connection."); se.printStackTraceO; System.exit(l): } String url = null; try { url = dbmd.getURLO; } catch (SQLException se) { System.out.printlnC'We got an exception while getting the URL:" + "check the connection."); se.printStackTrace(); System.exit(l): } System.out.printlnC'You are connected to '" + url + '" with user name '" + username +…..);
Как было сказано выше, лучшим источником информации о других методах DatabaseMetaData является документация JDK API.