Запись в файл 4 страница

// http://avanta.vvsu.ru/servlets/examples.example_db

// предполагается, что сервлет находится в директории сервлетов на WWW-сервере avanta.vvsu.ru

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

public class example_db extends HttpServlet

{

public void doGet (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException

{

// передача типа генерируемого сервлетом содержимого

response.setContentType("text/html; charset=UTF-8");

// получение выходного потока для вывода генерируемого содержимого

Writer out=new BufferedWriter(new OutputStreamWriter(response.getOutputStream(),"Cp1251"));

// начало формирования результата в формате html-файла

out.write("<HTML><HEAD><TITLE>Пример сервлета</TITLE></HEAD><body>\n");

// формирование содержимого

out.write("<h1>Пример работы сервлета, использующего JDBC</h1>\n");

//------------- Что происходит в этом блоке try-catch? ------------------------

try

{

String query;

Statement stmt;

PreparedStatement pstmt;

CallableStatement cstmt;

ResultSet rset;

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

java.sql.Connection

conn=DriverManager.getConnection("jdbc:oracle:thin:@uran:1521:ORCL","scott","tiger");

// ------------------------------------------------------------------------

out.write("<h2>Результат работы <<статичного запроса,параметризированного запроса, хранимой процедуры(или функции)>>(ненужное удалить!!!)</h2>\n");

query="select CITY,COUNTRY,POPULATION from WORLD_CITIES order by COUNTRY";

stmt = conn.createStatement ();

rset = stmt.executeQuery (query);

while (rset.next ())

{

out.write("<p><font color=\"green\">");

out.write(rset.getString(2)+", "+rset.getString(1)+", "+rset.getString(3));

out.write("</font></p>\n");

}

rset.close();

stmt.close();

// ------------------------------------------------------------------------

out.write("<h2>Результат работы <<статичного запроса,параметризированного запроса, хранимой процедуры (или функции)>>(ненужное удалить!!!)</h2>\n");

query="select CITY,POPULATION from WORLD_CITIES where COUNTRY=? order by CITY";

pstmt = conn.prepareStatement (query);

pstmt.setString(1,"Australia");

rset = pstmt.executeQuery ();

while (rset.next ())

{

out.write("<p><font color=\"blue\">");

out.write(rset.getString(1)+" -- "+rset.getString(2));

out.write("</font></p>\n");

}

rset.close();

pstmt.close();

// ------------------------------------------------------------------------

out.write("<h2>Результат работы <<статичного запроса,параметризированного запроса, хранимой процедуры (или функции)>>(ненужное удалить!!!)</h2>\n");

query="{?=call summa(?,?)}";

cstmt = conn.prepareCall(query);

cstmt.registerOutParameter(1,java.sql.Types.INTEGER);

cstmt.setInt(2,7);

cstmt.setString(3,"8");

cstmt.executeUpdate();

int res=cstmt.getInt(1);

out.write("<p><font color=\"teal\">Итог ..?чего?.. = "+res+"</font></p>\n");

cstmt.close();

conn.close();

}

catch(SQLException e)

{

out.write("<p>Обращение к базе данных вызвало следующее исключение: "+e.toString());

}

finally

{

// завершение формирования результата и закрытие потока

out.write("</body></html>\n");

out.flush(); out.close();

return;

}

}

}

/*--------------------------*/

Задания к лабораторной работе

Задание1. Проверить и объяснить работу сервлета example_db,рассматриваемого в данной главе в качестве примера и отмеченного курсивом.

Задание 2. Дать ответы на контрольные вопросы.

Контрольные вопросы

1. Как происходит соединение с базой данных?

2. Как выбрать результаты запроса?

3. Для чего используется интерфейс ResultSetMetaData?

4. Как выполняется доступ к хранимым функциям и процедурам?

5. Почему применение выходных параметров полезно в процедурах и функциях?

6. Какие дополнительные функции включает в себя отладка приложений JDBC?

ПРИЛОЖЕНИЕ 1