Вы находитесь на странице: 1из 7

CONEXIN DE ORACLE CON JAVA

Bueno esta de mas decir q necesitamos crear un proyecto en netbeans Despus de descargarnos el driver lo debemos agregar a la carpeta Libraries de nuestro proyecto click derecho>addjar buscamos el jar y ya esta: Para simplificar este tutorial encapsularemos toda la funcionalidad en una sola clase llamada 'funcionalidad', la cual explicaremos paso a paso. Como Paso 1 Creamos la conexin a la base de datos : Este paso es importantsimo porque sin esta conexin no podremos establecer una sesin, a continuacin el cdigo: Este mtodo de tipo funcionalidad llamado conectar es el q se encarga de crear dicha conexin, lo primero es meter todo el cdigo dentro de un try and catch para solventar o manejar cualquier error que pueda darse, luego::

public funcionalidad conectar() { try { Class.forName("oracle.jdbc.OracleDriver");

Este es el nombre del driver jdbc que descargamos antes


String BaseDeDatos = "jdbc:oracle:thin:@localhost:1521:bdb";

Esta parte es importante ya que aqui es donde le decimos a java a que base de datos se va a conectar (el nombre), la ip del host al que se va a conectar (aunque puede ser el localhost), el puerto por el que escucha el listener, vamos que si trabajan con oracle saben lo que es un listener y por ultimo el nombre de la database q en mi caso es bdb.
conexion = DriverManager.getConnection(BaseDeDatos, "hr","hr"); if (conexion != null) { System.out.println("Conexion exitosa!"); } else { System.out.println("Conexion fallida!"); } } catch (Exception e) { e.printStackTrace(); } return this; }

En esta parte le indicamos a oracle que usuario vamos a usar para la conexion, nosotros usaremos el usuario HR con la contrasea HR tambien

PASO 2: Ahora seguimos con la funcionalidad que nos permitir escribir en la base de datos (Insertar, Borrar o hacer update) Escribir mtodo es un booleano que devuelve true si se realiza con xito la transaccin o false si hay algun error.
public boolean escribir(String sql) {

Todo dentro de un try and catch como buena prctica de programacin y aqu bsicamente recibimos un objeto de tipo String que contiene una sentencia SQL a la que le daremos formato en la interfaz grfica, luego creamos un objeto de tipo Statement que nos permite escribir borrar o actualizar valores dentro de la base de datos con el hacemos un executeUpdate de nuestra cadena sql y luego un commit, despus cerramos la conexin. Si existe algn error devolvemos una cadena de error..
try { Statement sentencia; sentencia = getConexion().createStatement(ResultSet.TYPE_FORW ARD_ONLY, ResultSet.CONCUR_READ_ONLY); sentencia.executeUpdate(sql); getConexion().commit(); sentencia.close(); } catch (SQLException e) { e.printStackTrace(); System.out.print("ERROR SQL"); return false; } return true; }

PASO 3: ahora vamos a crear el mtodo consultar, que no hace otra cosa ms que consultar la base de datos Este es un mtodo de tipo ResultSet el cual es capaz de almacenar consultas sql tipicas con el comando select y siempre recibe una sentencia sql y devuelve un objeto de tipo ResultSet que luego se formatea en la interfaz grfica.

public ResultSet consultar(String sql) { ResultSet resultado = null;

try { Statement sentencia; sentencia = getConexion().createStatement(ResultSet.TYPE_FORW ARD_ONLY, ResultSet.CONCUR_READ_ONLY); resultado = sentencia.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); return null; } return resultado; }

PASO 4 : la interfaz grfica Yo la hice sencilla porque la tabla solo tiene 3 campos y es bastante compresiva

La interfaz se puede realizar con el asistente de netbeans (paleta) o se puede realizar a puro codigo lo que mas les guste, y la funcionalidad que encasilla en los metodos que gestionan los eventos para cada boton. Si tienen dudas me comentan, les dejo parte de la interfaz.

import import import import import

java.sql.ResultSet; java.sql.SQLException; java.util.logging.Level; java.util.logging.Logger; javax.swing.table.DefaultTableModel;

/** * * @author xtiyo */ public class Interfaz_grafica extends javax.swing.JFrame { private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: String sql=""; //int id= Integer.parseInt(jTextField1.getText()); String id=jTextField1.getText(); String n=jTextField2.getText(); String c=jTextField3.getText(); if(jComboBox1.getSelectedIndex()==0){

//String sql="INSERT INTO alumnos VALUES (11,'julio','carrera')"; sql ="INSERT INTO alumno VALUES ("+id+",'"+n+"','"+c+"')"; } if(jComboBox1.getSelectedIndex()==1){ sql = "UPDATE alumnos SET nombre='"+jTextField2.getText()+"',carrera='"+j TextField3.getText()+"' where id="+jTextField1.getText(); } if(jComboBox1.getSelectedIndex()==2){ sql = "DELETE FROM alumno WHERE id="+jTextField1.getText(); } funcionalidad f = new funcionalidad(); f.conectar(); boolean k = f.escribir(sql);

if(k==true){ jLabel5.setText("Transaccion exitosa!!"); } else { jLabel5.setText("Error en la transaccion"); }

} private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) { // TODO add your handling code here: if(jComboBox1.getSelectedIndex() == 0) { jTextField1.setText(""); jTextField1.setEditable(true); jTextField2.setText(""); jTextField2.setEditable(true); jTextField3.setText(""); jTextField3.setEditable(true); } if(jComboBox1.getSelectedIndex() == 1) { jTextField1.setText(""); jTextField1.setEditable(true); jTextField2.setText(""); jTextField2.setEditable(true); jTextField3.setText(""); jTextField3.setEditable(true); }

if(jComboBox1.getSelectedIndex() == 2) { jTextField1.setText(""); jTextField1.setEditable(true); jTextField2.setText(""); jTextField2.setEditable(false); jTextField3.setText(""); jTextField3.setEditable(false); } } private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: funcionalidad f = new funcionalidad(); f.conectar(); ResultSet r = f.consultar("select * from alumno");

DefaultTableModel modelo = new DefaultTableModel(); jTable1.setModel(modelo); modelo.addColumn("ID"); modelo.addColumn("NOMBRE"); modelo.addColumn("CARRERA"); try { while(r.next()){ Object [] fila = new Object[3];//Crea un vector //para almacenar los valores del ResultSet for (int i=0;i<3;i++) fila[i] = r.getObject(i+1); // El primer indice en rs es el 1, no el cero, por eso se suma 1. //aado el modelo a la tabla modelo.addRow(fila); fila=null;//limpia los datos de el vector de la memoria } r.close();//cerrar result-set } catch (SQLException ex) { Logger.getLogger(Interfaz_grafica.class.getName()).log(Level. SEVERE, null, ex); } //Cierra el ResultSet }

Y les anexo la clase funcionalidad o almenos como deberia quedar

package oracle; import java.sql.*; /** * * @author xtiyo */ public class funcionalidad { private Connection conexion; public Connection getConexion() { return conexion; } public void setConexion(Connection conexion) { this.conexion = conexion; }

public funcionalidad conectar() { try { Class.forName("oracle.jdbc.OracleDriver"); String BaseDeDatos = "jdbc:oracle:thin:@172.16.3.1:1521:bdb"; conexion = DriverManager.getConnection(BaseDeDatos, "hr","hr"); if (conexion != null) { System.out.println("Conexion exitosa!"); } else { System.out.println("Conexion fallida!"); } } catch (Exception e) { e.printStackTrace(); } return this; } public boolean escribir(String sql) { try { Statement sentencia; sentencia = getConexion().createStatement(ResultSet.TYPE_FORW ARD_ONLY, ResultSet.CONCUR_READ_ONLY); sentencia.executeUpdate(sql); getConexion().commit();

sentencia.close(); } catch (SQLException e) { e.printStackTrace(); System.out.print("ERROR SQL"); return false; } return true; } public ResultSet consultar(String sql) { ResultSet resultado = null; try { Statement sentencia; sentencia = getConexion().createStatement(ResultSet.TYPE_FORW ARD_ONLY, ResultSet.CONCUR_READ_ONLY); resultado = sentencia.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); return null; } return resultado; } }

Вам также может понравиться