Запись в файл 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