reporte conexion a bd desde java

Post on 18-Apr-2015

56 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Instituto Tecnológico de Oaxaca

PROGRAMACIÓN AVANZADA

REPORTE DE CONEXIÓN DE BASES DE DATOS DESDE JAVA

6º SEMESTRE

CATEDRATICO: A. ARTURO ARAGON SORROZA

ALUMNA:

COLMENARES HERNANDEZ BERTHA IVETT

REPORTE: EJERCICIO DE CONEXIÓN A BASES DE DATOS DESDE JAVA

El siguiente reporte se realizo de acuerdo a la última unidad que abarca la materia de Programación Avanzada.

El objetivo principal de este proyecto, fue conectar una base de datos situada en cualquier programa editor de la misma desde una plataforma java.

Para hacer posible la conexión de la base de datos con la plataforma java, trabaje con el gestor de bases de datos PostgreSQL y con DrJava.

CONEXIÓN

Antes de comenzar a codificar la conexión en java, primero instale el gestor de bases de datos PostgreSQL he inserte los scripts de los datos que contiene información sobre una tienda de artesanías, así mismo, el controlador de bases de datos JDBC correspondiente a PostgreSQL (postgresql-9.0-801.jdbc3).

En DrJava, en el menú edit en la opción Preferences… se encuentra la opción Extra Classpath, en Add agregue el controlador postgresql-9.0-801.jdbc3 para que sea reconocible la base de datos que se encuentra en PostgresSQL.

Después en PostgreSQL, agregue los scripts creacion_tablas_artesanias.sql e insercion_datos_artesanias.sql correspondientes para la creación de la base de datos artesanías.

Una vez que obtuve las tablas con los datos de las artesanías, clientes, vendedores y artesano por mencionar con los que trabaje principalmente, codifique las clases:

• MostrarBase • MostrarArtesano • MostrarCliente • MostrarVendedor • InicioBase

Esto, para poder realizar una interfaz simple de consulta de datos desde la base en PostgreSQL, seleccionando el botón correspondiente de cada tabla de datos aparecerán los que se encuentran disponibles dentro de la base en postgresql.

La primer clase que codifique fue MostrarBase es la que se conecta a la base de datos artesanías ubicada en PostgreSQL para obtener la tabla artesanía y posteriormente leer los datos que contiene la tabla para después mostrarlos en un JTextArea.

El código de la clase MostrarBase es el siguiente:

import java.awt.*; import java.sql.*; //Librerías import java.util.*; import javax.swing.*; public class MostrarBase extends JFrame{ String driver = "org.postgresql.Driver"; //direccion de la base de datos Postgresql String connectString = "jdbc:postgresql://localhost:5432/postgres"; //jdbc de postgresql, Puerto String user = "postgres"; //Usuario String password = "ivett1321"; //Contraseña private Connection con; //Objeto que establece la conexión private Statement stmt; //accede a la base para establecer consultas public MostrarBase(){ //Constructor try{ Class.forName(driver); //carga la clase del controlador donde esta la base de datos (dirección) con = DriverManager.getConnection(connectString,user,password); //establece conexión

stmt = con.createStatement(); //Consulta la base de datos ResultSet rs = stmt.executeQuery("SELECT * FROM artesanias.artesania"); //Consulta la //base de datos artesanías y llama a la tabla artesanía //leen los datos que se están consultando StringBuffer resultados = new StringBuffer(); ResultSetMetaData metaDatos = rs.getMetaData(); int numeroDeColumnas = metaDatos.getColumnCount(); //Obtiene los datos de la tabla for(int i=1; i<= numeroDeColumnas; i++) resultados.append(metaDatos.getColumnName(i)+ "\t"); resultados.append("\n"); while(rs.next()){ //Mientras existan datos en la tabla for(int i=1; i<= numeroDeColumnas;i++) resultados.append(rs.getObject(i)+ "\t"); //Obtiene los datos en forma de Objetos resultados.append("\n"); } //Creacion de GUI JTextArea areaTexto = new JTextArea(resultados.toString()); areaTexto.setBackground(Color.CYAN); Container contenedor = getContentPane(); contenedor.add(new JScrollPane(areaTexto)); setTitle("Tabla de Clientes"); setSize(620,390); setLocation(60,20); setVisible(true); }catch(Exception e ){ System.out.println("ERROR"); // si ocurre una excepción se cierra el JFrame System.exit(1); } finally{ try{ stmt.close(); //Cierran la conexión con.close(); }catch(SQLException excepcionSql){ JOptionPane.showMessageDialog(null, excepcionSql.getMessage(), "Error en la Base de Datos", JOptionPane.ERROR_MESSAGE); System.exit(1); } } }

public static void main (String[] args) { MostrarBase ventana = new MostrarBase(); ventana.insertar(); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Para la clase MostrarArtesano se hizo referencia a la tabla artesano de la

base de datos:

import java.awt.*; import java.sql.*; //Librerías import java.util.*; import javax.swing.*; public class MostrarArtesano extends JFrame{ String driver = "org.postgresql.Driver"; //direccion de la base de datos Postgresql String connectString = "jdbc:postgresql://localhost:5432/postgres"; //jdbc de postgresql, Puerto String user = "postgres"; String password = "ivett1321"; private Connection con; private Statement stmt; //accede a la base para establecer consultas public MostrarArtesano(){ try{ Class.forName(driver); con = DriverManager.getConnection(connectString, user , password); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM artesanias.artesano"); //leen los datos que se están consultando StringBuffer resultados = new StringBuffer(); ResultSetMetaData metaDatos = rs.getMetaData(); int numeroDeColumnas = metaDatos.getColumnCount(); for(int i=1; i<= numeroDeColumnas; i++) //Obtiene los datos de la tabla resultados.append(metaDatos.getColumnName(i)+ "\t"); resultados.append("\n"); while(rs.next()){ //Mientras existan datos en la tabla

for(int i=1; i<= numeroDeColumnas;i++) resultados.append(rs.getObject(i)+ "\t"); //Obtiene los datos en forma de Objetos resultados.append("\n"); } JTextArea areaTexto = new JTextArea(resultados.toString()); areaTexto.setBackground(Color.CYAN); Container contenedor = getContentPane(); contenedor.add(new JScrollPane(areaTexto)); setTitle("Tabla de Artesanos"); setSize(620,390); setLocation(60,20); setVisible(true); }catch(Exception e ){ System.out.println("ERROR"); System.exit(1); } finally{ try{ stmt.close(); //Cierran los flujos de conexión con.close(); }catch(SQLException excepcionSql){ JOptionPane.showMessageDialog(null, excepcionSql.getMessage(), "Error en la Base de Datos", JOptionPane.ERROR_MESSAGE); System.exit(1); } } } public static void main (String[] args) { MostrarArtesano ventanaArt = new MostrarArtesano(); ventanaArt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Clase MostrarVendedor:

import java.awt.*; import java.sql.*; import java.util.*; import javax.swing.*; public class MostrarVendedor extends JFrame{ String driver = "org.postgresql.Driver"; //dirección de la base de datos Postgresql String connectString = "jdbc:postgresql://localhost:5432/postgres"; // jdbc controlador String user = "postgres"; String password = "ivett1321"; private Connection con; private Statement stmt; public MostrarVendedor(){ try{ Class.forName(driver); con = DriverManager.getConnection(connectString, user , password); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM artesanias.vendedor"); //Obtiene la table vendedor StringBuffer resultados = new StringBuffer(); ResultSetMetaData metaDatos = rs.getMetaData(); int numeroDeColumnas = metaDatos.getColumnCount(); for(int i=1; i<= numeroDeColumnas; i++) resultados.append(metaDatos.getColumnName(i)+ "\t"); resultados.append("\n"); while(rs.next()){ for(int i=1; i<= numeroDeColumnas;i++) resultados.append(rs.getObject(i)+ "\t"); resultados.append("\n"); } JTextArea areaTexto = new JTextArea(resultados.toString()); areaTexto.setBackground(Color.CYAN); Container contenedor = getContentPane(); contenedor.add(new JScrollPane(areaTexto)); setTitle("Tabla de Vendedor"); setSize(620,390); setLocation(60,20); setVisible(true); }catch(Exception e ){ System.out.println("ERROR");

System.exit(1); } finally{ try{ stmt.close(); con.close(); }catch(SQLException excepcionSql){ JOptionPane.showMessageDialog(null, excepcionSql.getMessage(), "Error en la Base de Datos", JOptionPane.ERROR_MESSAGE); System.exit(1); } } } public static void main (String[] args) { MostrarVendedor ventanaVen = new MostrarVendedor(); ventanaVen.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Igualmente para MostrarCliente:

import java.awt.*; import java.sql.*; //Librerías import java.util.*; import javax.swing.*; public class MostrarCliente extends JFrame{ String driver = "org.postgresql.Driver"; //direccion de la base de datos Postgresql String connectString = "jdbc:postgresql://localhost:5432/postgres"; //jdbc de postgresql, Puerto String user = "postgres"; String password = "ivett1321"; private Connection con; private Statement stmt; //accede a la base para establecer consultas public MostrarCliente(){ try{ Class.forName(driver); con = DriverManager.getConnection(connectString, user , password); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM artesanias.cliente"); //leen los datos que se están consultando

StringBuffer resultados = new StringBuffer(); ResultSetMetaData metaDatos = rs.getMetaData(); int numeroDeColumnas = metaDatos.getColumnCount(); for(int i=1; i<= numeroDeColumnas; i++) //Obtiene los datos de la tabla resultados.append(metaDatos.getColumnName(i)+ "\t"); resultados.append("\n"); while(rs.next()){ //Mientras existan datos en la tabla for(int i=1; i<= numeroDeColumnas;i++) resultados.append(rs.getObject(i)+ "\t"); //Obtiene los datos en forma de Objetos resultados.append("\n"); } JTextArea areaTexto = new JTextArea(resultados.toString()); areaTexto.setBackground(Color.CYAN); Container contenedor = getContentPane(); contenedor.add(new JScrollPane(areaTexto)); setTitle("Tabla de Artesanos"); setSize(620,390); setLocation(60,20); setVisible(true); }catch(Exception e ){ System.out.println("ERROR"); System.exit(1); } finally{ try{ stmt.close(); //Cierran los flujos de conexión con.close(); }catch(SQLException excepcionSql){ JOptionPane.showMessageDialog(null, excepcionSql.getMessage(), "Error en la Base de Datos", JOptionPane.ERROR_MESSAGE); System.exit(1); } } } public static void main (String[] args) { MostrarCliente ventanaCli= new MostrarCliente(); ventanaCli.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Clase InicioBase:

Esta clase solo contiene una ventana de inicio que con los botones de cada clase anterior que conecta a la base de datos para la consulta correspondiente de la tabla deseada, muestra los datos que se obtuvieron de las tablas al realizar la consulta en postgresql.

import java.awt.*; import java.awt.event.*; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.JOptionPane; public class InicioBase extends JFrame { JButton mostrarDatos; JButton salir; JButton artesano; JButton vendedor; JButton cliente; JPanel panel; JPanel panel1; JPanel panel2; public InicioBase(){ mostrarDatos=new JButton(); salir=new JButton(); cliente=new JButton(); vendedor=new JButton(); artesano=new JButton(); panel=new JPanel(); panel1=new JPanel(); panel2=new JPanel(); JLabel etiqueta1 = new JLabel(" INICIO"); JLabel etiqueta2 = new JLabel(" "); JLabel etiqueta3 = new JLabel(" "); JLabel etiqueta5 = new JLabel(" BASE DE DATOS ARTESANIAS"); etiqueta5.setFont(new Font("Comic Sans Ms", 1, 34)); setTitle("Conecta Bases de Datos"); this.setSize(620,390); setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE); setLocation(60,20); panel.setBackground(Color.ORANGE);

panel.setLayout(new GridLayout()); panel.add(etiqueta2); panel.add(etiqueta1); panel.add(etiqueta3); getContentPane().add(panel,BorderLayout.NORTH); panel1.setLayout(new BorderLayout()); panel1.setBackground(Color.YELLOW); panel1.add(etiqueta5); getContentPane().add(panel1,BorderLayout.CENTER); panel2.setLayout(new FlowLayout()); mostrarDatos.setText("Artesanias"); artesano.setText("Artesano"); vendedor.setText("Vendedor"); cliente.setText("Cliente"); salir.setText("Salir"); mostrarDatos.setBackground(Color.GREEN); artesano.setBackground(Color.GREEN); vendedor.setBackground(Color.GREEN); cliente.setBackground(Color.GREEN); salir.setBackground(Color.GREEN); panel2.add(mostrarDatos); panel2.add(artesano); panel2.add(vendedor); panel2.add(cliente); panel2.add(salir); panel2.setBackground(Color.ORANGE); getContentPane().add(panel2,BorderLayout.SOUTH); setVisible(true); mostrarDatos.addActionListener(new Mostrar()); artesano.addActionListener(new MostrarArtesanoBa()); vendedor.addActionListener(new MostrarVendedorBa()); cliente.addActionListener(new MostrarClienteBa()); salir.addActionListener(new Closee()); } private class Mostrar implements ActionListener{ public void actionPerformed(ActionEvent e){ MostrarBase mostrarArte=new MostrarBase(); } }

private class MostrarArtesanoBa implements ActionListener{ public void actionPerformed(ActionEvent e){ MostrarArtesano mostrarArt=new MostrarArtesano(); } } private class MostrarVendedorBa implements ActionListener{ public void actionPerformed(ActionEvent e){ MostrarVendedor mostrarVe=new MostrarVendedor(); } } private class MostrarClienteBa implements ActionListener{ public void actionPerformed(ActionEvent e){ MostrarCliente mostrarCli=new MostrarCliente(); } } private class Closee implements ActionListener{ public void actionPerformed(ActionEvent e){ System.exit(1); } } public static void main(String[] args){ InicioBase inicio=new InicioBase(); } }

IMÁGENES CORRESPONDIENTES A LA APLICACIÓN QUE MUESTRA LA INFORMACIÓN DE LAS TABLAS DE LA BASE DE DATOS.

InicioBase

MostrarBase

MostrarArtesano

MostrarVendedor

MostrarCliente

CONCLUSIONES

Como conclusión a este ejercicio de conexión de Bases de datos con java es que, es una forma muy practica para poder manipular la información de la base de datos sin tener que acceder al gestor de bases.

A pesar de que los conocimientos de SQL y gestores del mismo son muy escasos, es fácil de entender los códigos en java para conectar las bases ya que solo se da la dirección de la base dependiendo el gestor y así mismo los controladores necesarios para poder manipular los datos de las tablas desde un programa en java.

Donde se comenzó a complicar fue el la inserción de datos y eliminación ya que si no se dan los valores exactos de los datos que se están modificando, así como los tipos de datos, estos marcan errores. Aun seguiré trabajando en eso hasta lograr una aplicación que haga todas las operaciones básicas sobre la base de datos.

Alumna: Colmenares Hernández Bertha Ivett

top related