Spec-Zone .ru
спецификации, руководства, описания, API
|
A DATALINK
значение ссылается на ресурс вне базового источника данных через URL. URL, универсальный локатор ресурса, является указателем на ресурс во всемирной паутине. Ресурс может быть чем-то столь же простым как файлом или каталогом, или это может быть ссылка на более сложный объект, такой как запрос к базе данных или к поисковой системе.
Следующие темы затрагиваются:
Используйте метод PreparedStatement.setURL
определить a java.net.URL
возразите против готового оператора. В случаях, где тип устанавливаемого URL не поддерживается платформой Java, сохраните URL setString
метод.
Например, предположите, что владелец Перерыва на кофе хотел бы сохранить список важных URL в таблице базы данных. Следующий пример, DatalinkSample.addURLRow
добавляет одна строка данных к таблице DATA_REPOSITORY
. Строка состоит из строки, идентифицирующей URL, DOCUMENT_NAME
и URL непосредственно, URL
:
public void addURLRow(String description, String url) throws SQLException { PreparedStatement pstmt = null; try { pstmt = this.con.prepareStatement( "INSERT INTO data_repository" + "(document_name,url) VALUES (?,?)"); pstmt.setString(1, description); pstmt.setURL(2,new URL(url)); pstmt.execute(); } catch (SQLException sqlex) { JDBCTutorialUtilities.printSQLException(sqlex); } catch (Exception ex) { System.out.println("Unexpected exception"); ex.printStackTrace(); } finally { if (pstmt != null) { pstmt.close(); } } }
Используйте метод ResultSet.getURL
получать ссылку на внешние данные как a java.net.URL
объект. В случаях, куда тип URL возвратился методами getObject
или getURL
не поддерживается платформой Java, получите URL как a String
объект, вызывая метод getString
.
Следующий пример, DatalinkSample.viewTable
, выводит на экран содержание всех URL, сохраненных в таблице DATA_REPOSITORY
:
public static void viewTable(Connection con, Proxy proxy) throws SQLException, IOException { Statement stmt = null; String query = "SELECT document_name, url " + "FROM data_repository"; try { stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); if ( rs.next() ) { String documentName = null; java.net.URL url = null; documentName = rs.getString(1); // Retrieve the value as a URL object. url = rs.getURL(2); if (url != null) { // Retrieve the contents // from the URL URLConnection myURLConnection = url.openConnection(proxy); BufferedReader bReader = new BufferedReader( new InputStreamReader( myURLConnection. getInputStream())); System.out.println("Document name: " + documentName); String pageContent = null; while ((pageContent = bReader.readLine()) != null ) { // Print the URL contents System.out.println(pageContent); } } else { System.out.println("URL is null"); } } } catch (SQLException e) { JDBCTutorialUtilities.printSQLException(e); } catch(IOException ioEx) { System.out.println("IOException caught: " + ioEx.toString()); } catch (Exception ex) { System.out.println("Unexpected exception"); ex.printStackTrace(); } finally { if (stmt != null) { stmt.close(); } } }
Выборка DatalinkSample
хранит Oracle URL, DATA_REPOSITORY
. Позже, это выводит на экран содержание всех документов, упомянутых URL, сохраненными в DATA_REPOSITORY
, который включает домашнюю страницу Oracle,
Выборка получает URL от набора результатов как a java.net.URL
объект со следующим оператором:
url = rs.getURL(2);
Демонстрационные доступы данные, упомянутые URL
объект со следующими операторами:
URLConnection myURLConnection = url.openConnection(proxy); BufferedReader bReader = new BufferedReader( new InputStreamReader( myURLConnection.getInputStream())); System.out.println("Document name: " + documentName); String pageContent = null; while ((pageContent = bReader.readLine()) != null ) { // Print the URL contents System.out.println(pageContent); }
Метод URLConnection.openConnection
не может взять параметры, что означает что URLConnection
представляет прямую связь с Интернетом. Если Вы требуете, чтобы прокси-сервер соединился с Интернетом, openConnection
метод принимает a java.net.Proxy
возразите как параметр. Следующие операторы демонстрируют, как создать прокси HTTP с именем сервера www-proxy.example.com
и номер порта 80
:
Proxy myProxy; InetSocketAddress myProxyServer; myProxyServer = new InetSocketAddress("www-proxy.example.com", 80); myProxy = new Proxy(Proxy.Type.HTTP, myProxyServer);