Руководство по JDBC v.1
Предыдущий | Содержание | Следующий
9 - Пример
// Следующий код может использоваться в качестве шаблона.
// Просто надо заменить соответствующие URL, login, пароль, и
// SQL-выражения на требуемые в каждой конкретной задаче строки.
//-------------------------------------------------------------
//
// Модуль: SimpleSelect.java
//
// Описание: Тестовая программа для интерфейса ODBC API.
// Это java-приложение соединяется с драйвером JDBC,
// испускает запрос "select" и отображает все результаты
// в виде таблицы
//
// Продукт: JDBC to ODBC Bridge
//
// Автор: Karl Moss
//
// Дата: февраль 1996
//
// Copyright: 1990-1996 INTERSOLV, Inc.
// This software contains confidential and proprietary
// information of INTERSOLV, Inc.
//-------------------------------------------------------------
import java.net.URL;
import java.sql.*;
class SimpleSelect
{
public static void main (String args[])
{
String url = "jdbc:odbc:my-dsn";
String query = "SELECT * FROM emp";
try
{
// Загружаем драйвер моста jdbc-odbc
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
DriverManager.setLogStream(System.out);
// Пытаемся соединиться с драйвером. Идет поиск
// хотя бы одного из зарегистированных
// драйверов, который может обработать этот URL
Connection con = DriverManager.getConnection (
url, "my-user", "my-passwd");
// Если у нас не получится, то будет
// сгенерировано исключение. Т.о., если мы до сюда дошли,
// мы успешно соединились с URL
// Посмотрим, какие замечания были сгенерированы
// процедурой соединения. Выведем их.
checkForWarning (con.getWarnings ());
// Получить объект DatabaseMetaData и отобразить
// некоторую информацию об этом подключении
DatabaseMetaData dma = con.getMetaData ();
System.out.println("\nConnected to " + dma.getURL());
System.out.println("Driver " + dma.getDriverName());
System.out.println("Version " + dma.getDriverVersion());
System.out.println("");
// Создаем объект Statement, чтобы можно было
// отсылать SQL-запросы к драйверу
Statement stmt = con.createStatement ();
// Отсылаем запрос, получаем объект
ResultSet rs = stmt.executeQuery (query);
// Показать все колонки и стороки из набора данных
dispResultSet (rs);
// Закрыть набор данных
rs.close();
// Закрыть оператор
stmt.close();
// Закрыть соединение
con.close();
}
catch (SQLException ex)
{
// Сгенерировалось исключение SQLException. Отловить его
// и отобразить информацию об ошибке.
// Заметим, что может быть несколько объектов ошибки,
// соединенных вместе в одну цепочку
System.out.println ("\n*** Поймали SQLException ***\n");
while (ex != null)
{
System.out.println ("SQLState: " + ex.getSQLState ());
System.out.println ("Сообщение: " + ex.getMessage ());
System.out.println ("Vendor: " + ex.getErrorCode ());
ex = ex.getNextException ();
System.out.println ("");
}
}
catch (java.lang.Exception ex)
{
// Получили ошибку другого типа. Распечатать ее.
ex.printStackTrace ();
}
}
//-------------------------------------------------------------
// checkForWarning
// Проверить, есть ли предупреждения, и отобразить их.
// Возвращает true, если предупреждение есть.
//-------------------------------------------------------------
private static boolean checkForWarning (SQLWarning warn)
throws SQLException
{
boolean rc = false;
// Если дан объект SQLWarning, отобразить
// сообщения о предупреждениях. Заметьте, что может быть
// несколько предупреждений, связанных в цепочку
if (warn != null)
{
System.out.println ("\n *** Warning ***\n");
rc = true;
while (warn != null)
{
System.out.println ("SQLState: " + warn.getSQLState ());
System.out.println ("Message: " + warn.getMessage ());
System.out.println ("Vendor: " + warn.getErrorCode ());
System.out.println ("");
warn = warn.getNextWarning ();
}
}
return rc;
}
//-------------------------------------------------------------
// dispResultSet
// Отображает все колонки и строки в данном наборе данных
//-------------------------------------------------------------
private static void dispResultSet (ResultSet rs)
throws SQLException
{
int i;
// Получить ResultSetMetaData. Он нужен для
// получения загловков колонок
ResultSetMetaData rsmd = rs.getMetaData ();
// Взять количество колонок в наборе данных
int numCols = rsmd.getColumnCount ();
// Показать шапку
for (i=1; i<=numCols; i++)
{
if (i > 1) System.out.print(",");
System.out.print(rsmd.getColumnLabel(i));
}
System.out.println("");
// Показать все данные вплоть до конца набора данных
boolean more = rs.next ();
while (more)
{
// Для каждой колонки в цикле: получить
// ее значение и показать его
for (i=1; i<=numCols; i++)
{
if (i > 1) System.out.print(",");
System.out.print(rs.getString(i));
}
System.out.println("");
// Передвинуться на следующую строку набора данных
more = rs.next ();
}
}
}
Предыдущий | Содержание | Следующий




Узнай о чем ты на самом деле сейчас думаешь

