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



Hosted by uCoz