CONEXIÓN DE ORACLE CON JAVA

Bueno esta de mas decir q necesitamos crear un proyecto en netbeans Después 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 conexión a la base de datos : Este paso es importantísimo porque sin esta conexión no podremos establecer una sesión, a continuación el código: Este método de tipo funcionalidad llamado conectar es el q se encarga de crear dicha conexión, lo primero es meter todo el código 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 contraseña HR tambien

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

Todo dentro de un try and catch como buena práctica de programación y aquí básicamente recibimos un objeto de tipo String que contiene una sentencia SQL a la que le daremos formato en la interfaz gráfica, 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, después cerramos la conexión. Si existe algún 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 método consultar, que no hace otra cosa más que consultar la base de datos Este es un método 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 gráfica.

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 gráfica 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. //añado 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; } }