Practica 17 desarrollo de aplicaciones para ambiente distribuido
Enviado por kapiz666 • 28 de Junio de 2012 • 1.279 Palabras (6 Páginas) • 574 Visitas
desarrollo de aplicaciones para ambiente distribuido- capitulo 17
OBJETIVO:
En esta sección se presentan los siete pasos estándar para consultar bases de datos. Damos dos ejemplos sencillos (un programa de línea de comandos y un servlet) ilustrando los pasos para consultar una base de datos de Microsoft Access.
PLANTEAMIENTO:
El conductor es la pieza de software que sabe cómo hablar con el servidor de base de datos real. Para cargar el controlador, que acaba de cargar la clase apropiada, un bloque estático en la clase del controlador se realiza automáticamente una instancia del controlador y la registra con el gestor de controladores JDBC.
DESARROLLO:
1. Cargar el driver JDBC. Para cargar un controlador, debe especificar el nombre de la clase del controlador de base de datos en el método Class.forName. De este modo, se crea automáticamente una instancia del controlador y lo registra con el gestor de controladores JDBC.
2. Definir la dirección URL de conexión. En JDBC, una URL de conexión especifica el host del servidor, el puerto, y el nombre de la base de datos con los que establecer una conexión.
3. Establecer la conexión. Con la dirección URL de conexión, nombre de usuario y una contraseña, una conexión de red a la base de datos puede ser establecida. Una vez establecida la conexión, las consultas de base de datos se puede realizar hasta que la conexión está cerrada.
4. Crear un objeto Statement. Crear un objeto Statement le permite enviar consultas y comandos a la base de datos.
5. Ejecutar una consulta o actualización. Dado un objeto Statement, se pueden enviar sentencias SQL a la base de datos mediante la ejecución, executeQuery, executeUpdate, o los métodos de executeBatch.
6. Procesar los resultados. Cuando una consulta de base de datos se ejecuta un conjunto de resultados se devuelve. El ResultSet representa un conjunto de filas y columnas que se pueden procesar mediante llamadas a los métodos getXXX próximos y variados.
7. Cerrar la conexión. Cuando haya terminado de realizar las consultas y los resultados de procesamiento, debe cerrar la conexión, la liberación de recursos para la base de datos.
La presente convocatoria se podría lanzar una ClassNotFoundException, por lo que debe estar dentro de un bloque try / catch, como se muestra a continuación.
try { Class.forName("connect.microsoft.MicrosoftDriver"); Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("com.sybase.jdbc.SybDriver");
} catch(ClassNotFoundException cnfe) {
System.err.println("Error loading driver: " + cnfe);
}
Un objeto Statement se usa para enviar consultas y comandos a la base de datos. Se crea a partir de la conexión con createStatement de la siguiente manera.
NorthwindTest.java
package coreservlets;
import java.sql.*;
/** A JDBC example that connects to the MicroSoft Access sample
* Northwind database, issues a simple SQL query to the
* employee table, and prints the results.
*/
public class NorthwindTest {
public static void main(String[] args) {
String driver = "sun.jdbc.odbc.JdbcOdbcDriver"; String url = "jdbc:odbc:Northwind";
String username = ""; // No username/password required String password = ""; // for desktop access to MS Access. showEmployeeTable(driver, url, username, password);
}
/** Query the employee table and print the first and
* last names.
*/
public static void showEmployeeTable
(String driver, String url, String username, String password) {
try {
// Load database driver if it's not already loaded.
Class.forName(driver);
// Establish network connection to database.
Connection connection =
DriverManager.getConnection(url, username, password);
System.out.println("Employeesn" + "==========");
// Create a statement for executing queries. Statement statement = connection.createStatement(); String query =
"SELECT firstname, lastname FROM employees";
// Send query to database and store results.
ResultSet resultSet = statement.executeQuery(query);
// Print results.
while(resultSet.next()) { System.out.print(resultSet.getString("firstname") + " "); System.out.println(resultSet.getString("lastname"));
}
connection.close();
} catch(ClassNotFoundException cnfe) { System.err.println("Error loading driver: " + cnfe);
} catch(SQLException sqle) {
System.err.println("Error with connection: " + sqle);
}
NorthwindTest Result
Prompt> java coreservlets.NorthwindTest
NorthwindServlet.java
package coreservlets;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** A simple servlet that connects to a database and
* presents the results from the query in an HTML
* table. The driver, URL, username, password,
* and query are taken from form input parameters.
*/
public class NorthwindServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String docType =
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 " + "Transitional//EN"n";
String title = "Northwind Results";
out.print(docType + "<HTML>n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>n" + "<BODY BGCOLOR="#FDF5E6"><CENTER>n" + "<H1>Database Results</H1>n");
String driver = request.getParameter("driver"); String url = request.getParameter("url");
String username = request.getParameter("username");
String password=request.getParameter("password"); String query=request.getParameter("query"); showTable(driver, url, username, password, query, out); out.println("</CENTER></BODY></HTML>");
}
public void showTable(String driver, String url,
...