Programacion
programacion Orientada a Objetos  
 
  Guia POO 7 26-04-2025 05:44 (UTC)
   
 

I. OBJETIVOS.

 El estudiante podrá Conectarse a los Gestores de Base de Datos (MySQL o

SQLServer 2005).

 El estudiante podrá hacer capaz de hacer conexiones directamente desde un

formulario utilizando NetBeans IDE 6.1 con SQLServer 2005.

II. INTRODUCCIÓN.

Conexión a la base de datos.

Para conectarse a la base de datos, para lo cual básicamente hay que realizar dos pasos.

1. Registrar (Cargar en Memoria) el controlador. Esto se puede hacer de dos formas:

 De forma dinámica, por medio del método Class.forName(String de

driver). Esta es la forma más usual y la que usaremos en la mayor parte de

los ejemplos.

Ejemplos de carga dinámica:

* En MySQL local: Class.forName("com.mysql.jdbc.Driver");

* En Oracle: Class.forName("oracle.jdbc.Driver.OracleDriver");

 De manera estática, usando System.setProperties("jdbc.drivers",

String de driver).

2. Establecer la conexión por medio del método DriverManager

Connection conexion =

DriverManager.getConnection("jdbc:mysql://localhost/

java?user=root&password=admin");

DriverManager tiene muchos métodos getConnection() con parámetros variados. Todos

son variantes de lo mismo y la información que suministramos es la misma. Aquí hemos

utilizado uno con tres parámetros String.

NOTA:
Si todo va bien, tendremos nuestra conexión a la base de datos. Si va mal,

saltará una excepción. Por eso es importante (y obligatorio para que compile) meter

todo esto en un try-catch.


Para enviar comandos SQL a la base de datos, se usa la clase Statement de java. Esta

clase se obtiene a partir de la conexión, de esta forma:

Statement instruccion = conexion.createStatement();

Por supuesto, dentro de un try-catch.

Statement tiene muchos métodos, pero hay dos interesantes: executeUpdate() y

executeQuery(). El primero se usa para sentencias SQL que implica modificaciones en la

base de datos (INSERT, UPDATE, DELETE, etc). El segundo sólo para consultas

(SELECT y similares).

Consultar datos de la base de datos

Vamos a hacer ahora una consulta de los datos que acabamos de insertar en la base de

datos. Las consultas se hacen con executeQuery() y nos devolverán un ResultSet.

El ResultSet de alguna forma representa una conexión hacia los datos. En el ResultSet

NO están todavía los datos. Según se los vayamos pidiendo, los irá trayendo de base de

datos. Esto quiere decir que si una consulta devuelve muchos resultados, no se nos va a

llenar la memoria por el hecho de hacer la consulta.

Para traer el primer resultado, debemos llamar el método next() del ResulSet. Para el

siguiente otro next() y así sucesivamente hasta que next() devuelva false, indicando que

ya no quedaban datos. El código puede ser así

ResultSet tabla = instruccion.executeQuery("select Cod_materia, Nombre_materia,

Descripcion from materia");

System.out.println("Cod_materiatNombre_materiatDescripcion");

while(tabla.next())

System.out.println(tabla.getInt(1)+"t"+tabla.getString(2)+"t"+ tabla.getString(3));

Hemos hecho un SELECT para obtener los datos. Luego un bucle while(table.next()), es

decir, mientras next() vaya trayendo los resultados.

Después de next(), el resultado está disponible en el ResulSet. La forma de recoger los

campos es pedirlos con algún método get(). Si sabemos de qué tipo es el dato, podemos

pedirlo con getInt(), getString(), etc. Si no lo sabemos o nos da igual (como en este

caso), bastará con un getObject(), capaz de traer cualquier tipo de dato.

En estos métodos get() podemos pasar como parámetro un entero, empezando en 1, que

es el número del campo en el SELECT. Es decir, si hacemos SELECT campo1, campo2,

campo3 ..., si pedimos getObject(1) obtenemos el valor de campo1, para getObject(2) el

de campo2, etc.


Cerramos conexiones

Los Connection, Statement y ResultSet con conexiones abiertas con base de datos.

Debemos cerrarlas.

ResultSet se cierra solo cuando hacemos otra llamada execute() al Statement del que

obtuvimos este ResultSet o bien cuando el recolector de basura "recolecta" al ResultSet.

No nos preocupa en principio que se quede abierto, porque se acabará cerrando solo.

Eso sí, no podemos hacer nada con el Statement hasta que hayamos terminado con el

ResultSet o se nos cerrará. Si necesitamos realizar otra cosa con base de datos,

debemos crear otro Statement distinto.

Cuando terminemos con el Statement, lo cerramos con st.close().

Cuando terminemos con la Connection, la cerramos con conexion.close().

Tratamiento de Excepciones (try-catch)

En Java, como en cualquier otro lenguaje de programación, pueden existir situaciones en

la que el programa falle. Java llama a estos errores excepciones.

Para tratar excepciones deberemos usar la instrucción try (que significa intentar en

español).

1. try

2. {

3. //declaración que causa la excepción

4. }

Entre las llaves de try escribiremos el código que hará funcional nuestro programa. Para

capturar la excepción que puede generar este código necesitaremos otra instrucción

llamada catch (capturar).

1. catch(NombredeExcepcion obj)

2. {

3. //código para tratar el error

4. }


PROCEDIMIENTO.

OJO: Los ejemplos 1 y 2, la salida de dichas Conexión y Consultas las

podrá visualizar en el Output.

Ejemplo No 1.

Con MYSQL

Nombre de la Clase Programa.java

import java.sql.*;

public class Programa {

public static void main(String args[])

{

try

{

//Cargar clase de controlador de base de datos

Class.forName("com.mysql.jdbc.Driver");

//Crear el objeto de conexion a la base de datos

Connection conexion =

DriverManager.getConnection("jdbc:mysql://localhost/java?user=root&password=admin");

Statement instruccion = conexion.createStatement();

//Un objeto ResultSet, almacena los datos de resultados de una consulta

ResultSet tabla = instruccion.executeQuery("select Cod_materia, Nombre_materia,

Descripcion from materia");

System.out.println("Cod_materiatNombre_materiatDescripcion");

while(tabla.next())

System.out.println(tabla.getInt(1)+"t"+tabla.getString(2)+"t"+ tabla.getString(3));

instruccion.close();

conexion.close();

}

catch(ClassNotFoundException e){ System.out.println(e); }

catch(SQLException e){ System.out.println(e); }

}

}


Ejemplo No 2.

Con SQL Server

Nombre de la Clase ProgramaSQLServer.java

import java.sql.*;

public class ProgramaSQLServer {

/**

* @param args the command line arguments

*/

public static void main(String[] args)

{

// TODO code application logic here

try

{

//Cargar clase de controlador de base de datos

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

//Crear el objeto de conexion a la base de datos

Connection conexion =

DriverManager.getConnection("jdbc:sqlserver://SQLSERVER:1433;databaseName=java;us

er=sa;password=sql2005");

//Crear objeto Statement para realizar queries a la base de datos

Statement instruccion = conexion.createStatement();

//Un objeto ResultSet, almacena los datos de resultados de una consulta

ResultSet tabla = instruccion.executeQuery("select Cod_materia, Nombre_materia,

Descripcion from materia");

System.out.println("Codigo de la materiatNombre de la MateriatDescripcion");

while(tabla.next())

System.out.println("t"+tabla.getInt(1)+"tt"+tabla.getString(2)+"tt"+tabla.getString(3));

}

catch(ClassNotFoundException e){ System.out.println(e); }

catch(SQLException e){ System.out.println(e); }

}

}

Conexión a SQLServer 2005 con NetBeans IDE 6.1

Ejemplo No 3.

1. Primeramente hay que agregar al proyecto una java class que tendrá el Nombre

de Conexion1.java

2. Agregar al proyecto un contenedor de JFrame Form con el nombre de

JFMantenimientoAlumno.java. Y hacer los cambios que se muestran en la tabla

de la figura 1.

Figura 1.

public class Conexion1

{

//Nombre del controlador JDBC y URL de la base de datos

static final String CONTROLADOR_JDBC =

"com.microsoft.sqlserver.jdbc.SQLServerDriver";

static final String URL_BASEDEDATOS =

"jdbc:sqlserver://SQLSERVER:1433;databaseName=java;user=sa;password=sql2005";}


Control Propiedad Eventos Código Valor

JFrame title Formulario de

Estudiantes

JLabel1 font

text

Tahoma 18 Bold

Mantenimiento

de Estudiante.

JPanel1 border Titled Border Información de

Estudiante.

JLabel2 text Codigo:

JLabel3 text Apellidos:

JLabel4 text Nombres:

JTextField text Variable Name ecodigo

JTextField text Variable Name eapellidos

JTextField text Variable Name enombres

JPanel2 border Titled Border Mantenimientos

JButton text

actionPerformed

Variable Name

Buscar

buscar

mbuscar

JButton text

actionPerformed

Variable Name

Insertar

insertar

minsertar

JButton text

actionPerformed

Variable Name

Borrar

borrar

mborrar

JButton text

actionPerformed

Variable Name

Salir

salir

msalir


import java.sql.*;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;

import java.sql.Connection;

import java.sql.DriverManager;

public class JFMantenimientoAlumno extends javax.swing.JFrame

{

private Connection conexion;

private Statement instruccion;

private ResultSet conjuntoResultados;

/** Creates new form JFMantenimientoAlumno */

public JFMantenimientoAlumno() throws SQLException

{

initComponents();

try

{

Class.forName(Conexion1.CONTROLADOR_JDBC);

conexion = DriverManager.getConnection( Conexion1.URL_BASEDEDATOS );

instruccion= conexion.createStatement();

}

catch(ClassNotFoundException e )

{

JOptionPane.showMessageDialog(null,e.getMessage(),"Error en los controladores

JDBC", JOptionPane.ERROR_MESSAGE);

}

catch(SQLException e)

{

JOptionPane.showMessageDialog(null,e.getMessage(),"Error en la base de datos",

JOptionPane.ERROR_MESSAGE);

}

}

/** This method is called from within the constructor to

* initialize the form.

* WARNING: Do NOT modify this code. The content of this method is

* always regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

GUÍA 6 pág. 10

private void salir(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

System.exit(0);

}

private void borrar(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

ecodigo.setText("");

enombres.setText("");

eapellidos.setText("");

}

private void buscar(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

String consulta="";

consulta= "select Cod_alumno, Apellidos, Nombres from alumno where Cod_alumno

='" + ecodigo.getText().toString() + "'";

try

{

conjuntoResultados= instruccion.executeQuery(consulta);

while (conjuntoResultados.next())

{

eapellidos.setText(conjuntoResultados.getString(2));

enombres.setText(conjuntoResultados.getString(3));

}

}

catch(SQLException e)

{

JOptionPane.showMessageDialog(null, e.getMessage(),"Error al mostrar los datos.",

JOptionPane.ERROR_MESSAGE);

}

}


private void insertar(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

String insertar="";

insertar = "insert into alumno (Cod_alumno, Apellidos, Nombres) values ('" +

ecodigo.getText().toString()+ "'" + ",'" + eapellidos.getText().toString() +

"','" + enombres.getText().toString() + "')";

try

{

if (ecodigo.getText().equals(""))

{

JOptionPane.showMessageDialog(rootPane,"Espeficar el codigo de Estudiante y

Materia");

}

else

{

instruccion.executeUpdate(insertar);

JOptionPane.showMessageDialog(rootPane, "Registrado Estudiante con Exito !!");

}

}

catch (SQLException e)

{

JOptionPane.showMessageDialog(null, e.getMessage(), "Error en la base de datos",

JOptionPane.ERROR_MESSAGE);

}

}

/**

* @param args the command line arguments

*/

public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

try {

new JFMantenimientoAlumno().setVisible(true);

} catch (SQLException ex) {

Logger.getLogger(JFMantenimientoAlumno.class.getName()).log(Level.SEVERE, null,

ex);

}

}

});

}

// Variables declaration - do not modify

private javax.swing.JTextField eapellidos;

private javax.swing.JTextField ecodigo;

private javax.swing.JTextField enombres;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

private javax.swing.JButton mborrar;

private javax.swing.JButton mbuscar;

private javax.swing.JButton minsertar;

private javax.swing.JButton msalir;

// End of variables declaration

3- Crear un formulario de mantenimiento para la tabla materia

 

 
  Programacion Orientada a Objetos
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  Archivos de la pagina
  Unidad 3 Herencia
3.1 Definición: clase base, clase derivada.

3.2 Clasificación: herencia simple, herencia múltiple.

3.3 Reutilización de miembros heredados.

3.4 Referencia al objeto de la clase base.

3.5 Constructores y destructores en clases derivadas.

3.6 Redefinición de métodos en clases derivadas
  Unidad 4
4.1 Definición

4.2 Clases abstractas: definición, métodos abstractos, implementación de clases abstractas, modelado de clases abstractas.

4.3 Interfaces: definición, implementación de interfaces, herencia de interfaces.

4.4 Variables polimórficas (plantillas):
Definición, uso y aplicaciones.

4.5 Reutilización de código.
  Unidad 5 Excepciones
5.1 Definición

5.2 Tipos de excepciones

5.3 Propagación de excepciones.

5.4 Gestión de excepciones: manejo de excepciones, lanzamiento de excepciones.

5.5 Creación y manejo de excepciones definidas por el usuario.
  Unidad 6
6.1 Definición

6.2 Clasificación: Archivos de texto y binarios.

6.3 Operaciones básicas y tipos de acceso.

6.4 Manejo de objetos persistentes
Hoy habia 4 visitantes (5 clics a subpáginas) ¡Aqui en esta página!
Ivette Irene Garcia Castro. Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis