Sei sulla pagina 1di 11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

Buscar en miarroba ...

Crea tu blog GRATIS

Blog aleatorio

Entrar

Regstrate

TECNOLOGASDELAINFORMACINY
COMUNICACIN
MIRCOLES, 15 DE ABRIL DE 2015

Acercade...

Oraclealtas,bajasymodificardesdeNetbeans
A continuacin se explicara la manera de conectar y desarrollar una aplicacin en Netbeans 8, que
permita salvar, modificar y eliminar datos de una base de datos de Oracle 11g.

ORACLE TABLAS, PROCEDIMIENTOS Y LANZADORES.


1. En oracle, dentro de la conexin de hr, crear una base de datos llamada sales.
CREATE TABLE SALES
( EMPLOYEE_ID NUMBER(6),
AMOUNT NUMBER(10),
SALE_DATE DATE);

2. De igual forma en la conexin de hr, crear otra tabla llamada salespermonthyear.


CREATE TABLE SALESPERMONTHYEAR
(
MES NUMBER(4)
, YEAR NUMBER(4)
, AMOUNT NUMBER(12)
);

3.Ahora generar un procedimiento almacenado para la insercion de datos en la tabla sales.


create or replace PROCEDURE INSERT_DATOS INCIA EL SEGMENTO PARA CREAR EL PROCEDMIENTO
CREACION DE VARIABLES RECEPTORAS
( PIDE IN NUMBER ,
PAM IN NUMBER ,
PDATE IN DATE ) AS
BEGININICIA EL PROCEDIMIENTO
INSERT INTO SALES VALUES (PIDE,PAM,PDATE);SENTENCIA INSERT USANDO LAS VARIABLES
RECEPTORAS CREADAS
END INSERT_DATOS;CIERRE DEL PROCEDIMIENTO

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

Cmulo de trabajos, prcticas,


experiencias, y andanzas en el mundo de las
tecnologas de la informacin y
comunicacin vividas en una universidad
tecnolgica de nuestro sin igual Mxico.

Participantes
neofito69
CesarAlba
octavio.tolentino
omargarzalimon
carlos_h_1982
samani1907
luigimoon
cesar_vf20

Artculosanteriores
Netbeans conectado a Oracle en UBUNTU
14.04
Compilacin del tutorial de Java EE 5
Leer un archivo XML en Java (JDom)
ABC en Java con una base de datos SQLite
Como ordenar un conjunto de datos del
tipo arreglo(llave, info)
Curso Oracle Interfaces Java SE 8
Traduccin
Manipulacin de bases de datos SQLite con
Visual Studio 2013
Convertir archivos de FoxPro a una base
de datos Oracle
Conexin remota a base de datos Oracle
desde una aplicacin Java
Instalacin de Oracle 11g XE y SQL
Developer

Archivo
junio, 2015
abril, 2015
diciembre, 2014
noviembre, 2014
octubre, 2014
agosto, 2014
mayo, 2014
marzo, 2014
febrero, 2014
enero, 2014
julio, 2013
marzo, 2013
noviembre, 2012
junio, 2011

Categoras
Generales

1/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

4. Generar ahora un procedimiento para la insercin de datos en salespermonthyear.

create or replace PROCEDURE PS_ADD_SALE INICIA EL PROCEDIMIENTO


CREACION DE VARIABLES RECEPTORAS
( PIDEMPLOYEE IN NUMBER,

LinuxUbuntu
Windows 8
Windows7
WindowsXP
Java SE8
.NET C#
Virtual Box
Seguridad de la informacin
Base de datos

PAMOUNT IN NUMBER,
PSALE IN DATE) AS
CREACION DE VARIABLES DE FUNCION

Buscador
Buscar

vmes NUMBER;
vanio NUMBER;
regs NUMBER;
INICIA EL PROCEDIMIENTO

Sindicacin
RSS 0.91
RSS 1.0
RSS 2.0
ATOM 1.0

BEGIN
vmes:= EXTRACT(MONTH FROM PSALE);EXTRAER EL MES DEL CAMPO PSALE(FECHA)
vanio:= EXTRACT(YEAR FROM PSALE);EXTRAER EL AO DEL CAMPO PSALE(FECHA)
CONSULTA A LA TABLA SALESPERMONTHYEAR USANDO EL MES Y AO COMO PARAMETROS DE
BUSQUEDA
SELECT COUNT(*) INTO regs FROM SALESPERMONTHYEAR WHERE MES=vmes AND YEAR=vanio;
IF regs=0 THENSI NO HAY REGISTROS DE LA CONSULTA ANTERIOR, INSERTAR DATOS EN
SALESPERMONTHYEAR
INSERT INTO SALESPERMONTHYEAR
VALUES (vmes,vanio,pamount);
ELSEDE LO CONTRARIO, ACTUALIZAR EL MONTO(SUMAR MONTO), USANDO COMO PARAMETROS DE
BUSQUEDA EL MES Y EL AO
UPDATE SALESPERMONTHYEAR
SET AMOUNT=AMOUNT+pamount
WHERE MES=vmes AND YEAR=vanio;
END IF;FIN DE LA CONDICION
END PS_ADD_SALE;FIN DEL PROCEDIMIENTO
5.Crear el disparador (trigger) que servira para poder ejecutar el procedimiento ps_add_sale.

create or replace TRIGGER TR_GENERA_VENTAS INICIA TRIGGER


USAR LA PALABRA RESERVADA AFTER, INDICANDO QUE EJECUTARA ESTE DISPARADOR DESPUES DE
INSERTAR EN LA TABLA SALES
AFTER INSERT ON SALES
DEFINE LO QUE SE EJECUTARA CADA VEZ QUE EL DISPARADOR SE ACTIVE, LO CUAL OCURRE UNA VEZ
POR CADA FILA AFECTADA POR LA SENTENCIA ACTIVADORA.
FOR EACH ROW
BEGININICIO DEL DISPARADOR

PS_ADD_SALE(:new.employee_id,:new.amount,:new.sale_date); ENVIAR LOS VALORES AL


PROCEDIMIENTO PS_ADD_SALE
END;FIN DEL DISPARADOR

JAVA APLICACIN

1. En netbeans crear una nueva aplicacin llamada ventasapp


2. En proyectos eliminar la clase ventasapp.java
3. En el paquete de la aplicacin crear una nueva clase llamada main

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

2/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

4. En las libreras del proyecto aadir el archivo ojdbc6.jar.

5. Dentro de la clase main insertar el siguiente cdigo, que nos permitir establecer la conexin a
nuestra base de datos, as como hacer la consulta a la tabla que ocupamos en este proyecto:

package ventasapp;
import java.sql.*;
/**
*
* @author Cesar_vFonseca
*/
public class main {
/*Declaracion de variables*/
static Connection conn=null;
static Statement st=null;
static ResultSet rs=null;
/*Asignar datos de conexion*/
static String bd="XE";//TIPO DE BASE DE DATOS
static String login="HR";//USUARIO DE LA BASE DE DATOS
static String password="123";//CONTRASEA DEL USUARIO

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

3/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

static String url="jdbc:oracle:thin:@localhost:1521:XE";//URL DE CONEXION


/*Metodo de conexion a la base de datos*/
public static Connection Enlace(Connection conn)throws SQLException {
try {
Class.forName("oracle.jdbc.OracleDriver");
conn=DriverManager.getConnection(url, login, password);
}
catch(ClassNotFoundException e )
{
System.out.print("Clase no encontrada");
}
return conn;
}
/*Establecer la conexion a la base de datos*/
public static Statement sta(Statement st)throws SQLException {
conn=Enlace(conn);
st=conn.createStatement();
return st;
}
/*Hacer una consulta a la tabla*/
public static ResultSet EnlEst(ResultSet rs)throws SQLException {
st=sta(st);
rs=st.executeQuery("SELECT * FROM SALES");
return rs;
}
}
6. Ahora crearemos un jframe en el proyecto. Y lo nombraremos tbsales

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

4/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

7. Agregaremos ahora a la interfaz los siguientes elementos.


3 Botones(JButtons)
Guardar (btnguardar)
Modificar (btnmodificar)
Cancelar (btncancelar)
2 Campos de Texto(JTextField)
ID (txtid)
Monto (txtmonto)
1 Campo de Fecha (JFormattedTextField)
Fecha (txtfecha)
1 Tabla (JTable)
Tabla (tbsales)

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

5/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

8. As mismo al formulario agregaremos un elemento emergente (JPopMenu), dentro del elemento


emergen 2 JMenuItem, y lo relacionaremos a la tabla(Propiedades JTable>componentPopupMenu).

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

6/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

9. Importaremos las siguiente libreras en el cdigo del formulario:


/*
1. */
import java.sql.*;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
10. Dentro de la clase aadiremos los siguientes parmetros:
//creando variables de conexion a la base de datos
static Connection conn=null;
static Statement s=null;
static ResultSet rs=null;
//Para establecer el modelo al JTable
DefaultTableModel modelo = new DefaultTableModel();
11. Ahora crearemos un mtodos para mostrar los datos de Oracle en nuestra jtable, insertando el
siguiente cdigo despus del mtodo public tbsales()
/*AGREGAR A PARTIR DE AQUI*/
//CREANDO LA TABLA DE VENTAS
void tbsales (){
String []titulos={"Employee_id","Amount","Date_sale"};//CREANDO UN STRING PARA LO
TITULOS
String []Registros=new String[3];//DEFINIR EL TAMAO DE LA MATRIZ QUE COLUMNAS
modelo= new DefaultTableModel(null,titulos);//ASIGNAR LA MATRIZ TITUTLO A NUESTRO
MODELO DEL JTABLE
try{
rs=main.EnlEst(rs);//LLAMAMA AL METODO EnEst, EJECTURA UNA CONSULTA A LA TABLA SALES

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

7/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

while(rs.next())//RECORRER LA CONSULTA COLUMNA POR COLUMNA


{
//EXTRAER LOS CAMPOS DE LA BASE DE DATOS Y ASIGNARLOS A LA COLUMNAS DE LA TABLA
Registros[0]= rs.getString("EMPLOYEE_ID");
Registros[1]= rs.getString("AMOUNT");
Registros[2]= rs.getString("SALE_DATE").substring(0, 10);
//AADIR LAS COLUMNAS AL MODELO JTABLE
modelo.addRow(Registros);
}
//AADIR EL MODELO A NUESTRA TABLA
tbsales.setModel(modelo);

} catch (Exception ex) {


ex.printStackTrace();//RECIBIR UN ERROR
}
}
12. Agregar un mtodo para limpiar los campos, despus del mtodo anterior, para una mejor
presentacin.

void limpiar(){
txtid.setText(null);
txtmonto.setText(null);
txtfecha.setText(null);
}
13. AGREGAR EL SIGUIENTE CODIGO AL BOTON DE GUARDAR
// Boton Guardar
try {
conn=main.Enlace(conn);//INVOCANDO LA CONEXION DESDE LA CLASE main
String sql="{call insert_datos(?,?,?)}";//QUERY
PreparedStatement pst=conn.prepareStatement(sql);//EJECUCION DE QUERY POR MEDIO
DE STATEMENT
//ASIGANAR DE VARIABLES A LOS PARAMETROS DE QUERY
pst.setString(1, txtid.getText());
pst.setString(2, txtmonto.getText());
pst.setString(3, txtfecha.getText());
pst.execute();//EJECUTAR
pst.close();//CERRAR CONEXION
limpiar();//METODO PARA LIMPIAR CAMPOS
tbsales();//ACTUALIZAR LA VISTA DE LA TABLA
JOptionPane.showMessageDialog(null, "Guardado exitoso");//MENSAJE
}catch (Exception e){
System.out.println(e.getCause());//OBTENER ERROR
}
}
14. Al elemento emergente actualizar, le agregaremos el siguiente cdigo.

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

8/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

// ELEMENTO POP MODIFICAR


int fila = tbsales.getSelectedRow();//VARIABLE TIPO INT PARA OBTENER LOS DATOS DE JTABLE
String id="",amnt="",date="";//VARIABLES STRING
//OBTENER LOS VALORES DE JTABLE
if (fila>=0){
id=(tbsales.getValueAt(fila,0).toString());
amnt=(tbsales.getValueAt(fila,1).toString());
date=(tbsales.getValueAt(fila,2).toString());
}
//ASIGNAR LOS VALORES OBTENIDO A LAS VARIABLES STRING
txtid.setText(id);
txtmonto.setText(amnt);
txtfecha.setText(date.substring(2, 10));
btnmodificar.setEnabled(true);//BOTON MODIFICAR HABILITADO
btnguardar.setEnabled(false);//BOTON GUARDAR DESHABILITADO
}
15. Al botn de actualizar aadir el siguiente cdigo.
// MODIFICAR
int fila = tbsales.getSelectedRow();//VARIABLE TIPO INT PARA OBTENER VALOR DE JTABLE
String id="";//VARIABLE STRING
//OBTENER VALOR ID DE LA TABLA
if (fila>=0){
id=(tbsales.getValueAt(fila,0).toString());
}
try {
conn=main.Enlace(conn);//INVOCAR LA CONEXION DESDE LA CLASE main
String sql="{CALL MODIFICAR_VENTAS (?,?,?,?)}";//QUERY
PreparedStatement pst=conn.prepareStatement(sql);//EJECUCION DE QUERY POR MEDIO
DE STATEMENT
pst.setString(1, id);//COMO PRIMER PARAMETRO, EL DATO OBTENIDO DE LA TABLE
//OBTENER LOS DATOS DE LAS CAJAS DE TEXTO
pst.setString(2, txtid.getText());
pst.setString(3, txtmonto.getText());
pst.setString(4, txtfecha.getText());
pst.execute();//EJECUTAR QUERY
pst.close();//CERRAR CONEXION
limpiar();//LIMPIAR CAMPOS
btnguardar.setEnabled(true);//BOTON GUARDAR HABILITADO
btnmodificar.setEnabled(false);//BOTON MODIFICAR DESHABILITADI
tbsales();//ACTUALIZAR VISTA DE LA TABLA
JOptionPane.showMessageDialog(null, "Cambio exitoso ");//MENSAJE
}catch (Exception e){
System.out.println(e.getCause());//OBTENER ERROR
}
}

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

9/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

16. Al elemento emergente eliminar aadir el siguiente cdigo.

//ELIMINAR POP
int fila = tbsales.getSelectedRow();//VARIABLE TIPO INT PARA OBTENER VALOR DE JTABLE
String emp_id="";//VARIABLE STRING
//OBTENER VALOR ID DE LA TABLA
emp_id=tbsales.getValueAt(fila, 0).toString();
try {
conn=main.Enlace(conn);//INVOCAR LA CONEXION DESDE LA CLASE main
String sql="{CALL ELIMINAR_VENTAS ("+emp_id+")}";//QUERY
PreparedStatement pst=conn.prepareStatement(sql);//EJECUCION DE QUERY POR MEDIO
DE STATEMENT
pst.execute();//EJECUTAR QUERY
pst.close();//CERRAR CONEXION
tbsales();//ACTUALIZAR VISTA DE LA TABLA
JOptionPane.showMessageDialog(null, "Venta eliminada");//MENSAJE
}catch (Exception e){
System.out.println(e.getCause());//OBTENER ERROR
}
}

17. Al botn cancelar agregar el siguiente cdigo, donde solo llamar al mtodo limpiar.
limpiar();
18. Por ultimo a nuestro metodo publico tbsales(), agregareos lo siguiente:
public tbsales() {
initComponents();//INICIAR COMPONENTES
tbsales();//EJECUTAR VISTA DE LA JTABLE
btnmodificar.setEnabled(false);//DESHABILITAR BOTON MODIFICAR
}
Finalmente conseguiremos una ventana similar a la siguiente, y habremos terminado.

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

10/11

15/6/2016

Oraclealtas,bajasymodificardesdeNetbeansTecnologasdelainformacinycomunicacin

Elaborado por: Csar Adolfo Valenciano Fonseca


Correo: cesar.fonseca20@outlook.com

Publicado por cesar_vf20 @ 12:27

Comentarios (0) |Enviar

COMENTARIOS

Aadircomentario

http://parapasarso.blogcindario.com/2015/04/00017oraclealtasbajasymodificardesdenetbeans.html

11/11

Potrebbero piacerti anche