Иллюстрированный самоучитель по PostgreSQL

Использование 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.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.