0% encontró este documento útil (0 votos)
44 vistas22 páginas

Avance Computacion

El documento describe cómo conectar una base de datos SQL creada en Java con una tabla en una aplicación Java usando JDBC. Explica cómo crear la base de datos y las tablas, insertar datos, mostrar datos en una tabla Java mediante un modelo de tabla predeterminado, e implementar funciones para guardar, borrar y modificar datos. También muestra cómo realizar las mismas acciones conectándose a otra base de datos como PostgreSQL.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
44 vistas22 páginas

Avance Computacion

El documento describe cómo conectar una base de datos SQL creada en Java con una tabla en una aplicación Java usando JDBC. Explica cómo crear la base de datos y las tablas, insertar datos, mostrar datos en una tabla Java mediante un modelo de tabla predeterminado, e implementar funciones para guardar, borrar y modificar datos. También muestra cómo realizar las mismas acciones conectándose a otra base de datos como PostgreSQL.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como ODT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 22

Como juntar Java + SQL primero hacer tu base de datos por ejemplo

create database DemoILS;


use DemoILS
create table TblEspecialidad (
IdEspecialidad int primary key identity (1,1) ,
nombre varchar (30),
descripcion varchar(50),
);
create table Tblcurso(
id_curso int primary key identity(1,1) ,
IdEspecialidad int references TblEspecialidad (IdEspecialidad),
Nombre varchar (40),
Tipo varchar (20),
Creditos int,
);

Llenar tablas por ejemplo

insert into tblEspecialidad (Nombre,descripcion) VALUES('Informatica','Todo sobre


tecnologia');
insert into tblEspecialidad (nombre,descripcion) values('Contabilidad','Todo sobre
contabilidad');
select*from tblEspecialidad;}

====================== ESTA FUE MI BASE DE DATOS ===========================

create database MY_DB_ILS


use MY_DB_ILS
create table tblEspecialidad(
idEspecialidad int primary key identity(1,1), --En postgress es serial
nombre varchar (30),
descripcion varchar(50) –En postgress es character varying
);
create table tblCurso(
idCurso int primary key identity (1,1),
idEspecialidad int references tblEspecialidad(idEspecialidad),
Nombre varchar (40),
Tipo varchar (20),
Creditos int
);

Select * From tblCurso;

insert into tblEspecialidad (Nombre,descripcion) VALUES('Informatica','Todo sobre


tecnologia');
insert into tblEspecialidad (nombre,descripcion) values('Contabilidad','Todo sobre
contabilidad');
select*from tblEspecialidad;

Para empezar un un Jframe en la pestaña de Design


absolute layout

JscrollPane

Jtable le cambiamos el nombre por grilla


private JPanel contentPane;
private JTable grilla;
debajo de la declaracion de atributos ingresamos

private String url


="jdbc:sqlserver://localhost;DataBase=MY_DB_ILS;User=ils;Passw
ord=123";
es para enlazar con la base de datos

el siguiente objeto es declarar el objeto Connection de java sql

private Connection cn; para conectarte a la base de datos

Conectar a la DB (Con el objeto Connection Java-SQL)

Enviar la QUERY al SQL (PreparedStatement)

Ejecutar la QUERY SQL


Select : (ResultSelt)
Insert Update Delete}

ahora importamos los demas objetos

private PreparedStatement ps; (Prepara la sentencia)


private ResultSet rs; (Select en sql)

Acordar que hace select

todo esto es a nivel de proyecto importar el driver

debajo del método constructor:

creamos nuestro metodo cargarEspe y escribimos como en la


imagen

foquito con x y trow declaration


Add throws declaration

despues lo que vamos a hacer

ps=cn.prepareStatement("select * from tblEspecialidad" );

dentro de prepareStatemente ( va la query a mostrar);

rs=ps.executeQuery(); con esto ejecuto la consulta de arriba

ahora dentro de nuestro metodo constructor

cargamos el
espacio

y esta vez damos click en Surrond with try/catch

dentro de nuestro metodo cargarEspe aumentamos el codigo

DefaultTableModel model = new DefaultTableModel(null,new


String[] {"Id","Nombre","Descripcion"});
grilla.setModel(model);

esto nos permite aumentar una a la grilla una fila

agregamos un while para que recorra la base de datos


private void cargarEspe() throws SQLException {
DefaultTableModel model = new
DefaultTableModel(null,new String[]
{"Id","Nombre","Descripcion"});

cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("select * from
tblEspecialidad");
rs=ps.executeQuery();
while (rs.next()) {
model.addRow(new Object [] {
rs.getInt(1),
rs.getString(2),
rs.getString(3)
});
}
grilla.setModel(model);
cn.close();

con esto podemos mostrar la base de datos en la grilla

AHORA para insertar datos actualizar o borrar podemos usar

INSERT INTO tblEspecialidad (Nombre, Descripcion) VALUES(?,?);

UPDATE tblEspecialidad set Nombre=?, Descripcion=?


WHERE idEspecialidad=?;

DELETE FROM tblEspecialidad WHERE idEspecialidad=?;

ahora vamos a crear el evento action Performerd

activamos el action performed


escribimos guardarEspe();

en el foquito y luego

crear metodo guardarEspe() }

dentro de ese metodo


private void guardarEspe() {
// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
}

1) conectarse a la DB
2) preparar la sentencia
3) configurar los parametros de la sentencia (Hacer el
binding)
4) ejecutar la sentencia
5) desconectar de la DB

agregamos el throws declaration

y despues en em metodo agregamos el try/catch

ahora agregamos la coneccion

hacemos el preparestament y le ponemos la consulta

ps=cn.prepareStatement("INSERT INTO
tblEspecialidad(Nombre,Descripcion) VALUES (?,?);");

el codigo se verá asi:


private void guardarEspe() throws SQLException {
// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("INSERT INTO
tblEspecialidad(Nombre,Descripcion) VALUES (?,?);");
ps.setString(1, txtNombre.getText());
ps.setString(2, txtDescripcion.getText());
ps.execute();
cn.close();
JOptionPane.showMessageDialog(null, "Datos
Guardados");
cargarEspe();

Con esto ya hemos implementado como agregar datos

vamos a a grilla para usar el evento mouse clicked


despues nos saldra su evento(listener)

ahora
dentro del listener escribiremos este codigo

public void mouseClicked(MouseEvent e) {

txtIDespecialidad.setText(String.valueOf(grilla.getValueAt(gri
lla.getSelectedRow(), 0)));

txtNombre.setText(String.valueOf(grilla.getValueAt(grilla.getS
electedRow(), 1)));

txtDescripcion.setText(String.valueOf(grilla.getValueAt(grilla
.getSelectedRow(), 2)));
}

esto hara q se muestre la base de datos en las cajas de texto

ahora borraremos damos click derecho ad event handler action y


action performed lo q se hara cuando le demos click

Para
borrar el
codigo
que
pondremos
sera el
siguiente
JButton btnBorrar = new JButton("BORRAR");
btnBorrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Codigo para borrar
try {
borrarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void borrarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
}

primero creamos el metodo borrarEspe


dentro del metodo creado creado
hacemos la coneccion con el
cn=DriverManager.getConnection(url)
despues foquito rojo y throws declaration

subimos mas arriba y dentro del metodo borrarEspe();


foquito rojo y luego trycatch

escribimos
ps=cn.prepareStatement(url);

y donde dice url le pasamos la consulta q vamos a hacer en


esta caso eliminar una fila por lo tanto escribiremos codigo
para borrar

JButton btnBorrar = new JButton("BORRAR");


btnBorrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Codigo para borrar
try {
borrarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void borrarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("Delete from
tblEspecialidad where idEspecialidad=?"); //consulta para
borrar

ps.setInt(1,Integer.parseInt(txtIDespecialidad.getText()));
//c
ps.execute(); //ejecutar
cn.close(); //Cerrar
JOptionPane.showMessageDialog(null,
"DatosBorrados");
cargarEspe(); //Cargar BD
}

ahora haremos para modificar


JButton btnModificar = new JButton("MODIFICAR");
btnModificar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
modificarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void modificarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("UPDATE tblEspecialidad SET
Nombre=?, Descripcion=? WHERE idEspecialidad=?");
ps.setString(1, txtNombre.getText());
ps.setString(2, txtDescripcion.getText());
ps.setInt(3,
Integer.parseInt(txtIDespecialidad.getText()));
ps.execute();
ps.close();
JOptionPane.showMessageDialog(null, "Datos
Modificadores");
cargarEspe();
}
CAPITULO 2 CONECTANDO CON OTRA BASE DE DATOS

private JTable grilla;


private String url="jdbc:postgresql://localhost/demoils";
private String user="postgres";
private String password="123";

private Connection cn;


private PreparedStatement ps;
private ResultSet rs;

CAMBIA UN POCO LOS PRIVATE STRING PARA CONECTAR CON POSTGRE


PERO ES CASI IGUAL

creamos el metodo cargar ESPE

private void cargarEspe() {


DefaultTableModel modelTable = new
DefaultTableModel(null,new String[]
{"Id","Nombre","Descripcion"});
cn=DriverManager.getConnection(url, user, password);
}

aquí hay q usar la tecera sobrecarga de get<Connection (url,


user,paswword);
Ahora vamos a enlazar con la tabla cursos de la siguiente
manera

creamos un jframe con el nombre curso

hacemos nuestra interfaz grafica

y conectamos con la base da datos

//Declaracion de atributos necesarios para el acceso a datos


private String
url="jdbc:sqlserver://localhost;DataBase=Demo_ILS;User=ils;Password=123";
private Connection cn;
private PreparedStatement ps;
private ResultSet rs;

==============================================================

despues bajamos despues de nuestros botones y creamos 3 metodos en medio


de los 2 ultimos corchetes ( entre la llave de cierre de la clase y la
llave de cierre del metodo constructor

}
//Siempre debajo del ultimo boton
//Creamos 3 metodos

private void cargarTipos() {

private void cargarEspe() {

private void cargarCursos() {

private void cargarCursos() throws SQLException {

DefaultTableModel model = new DefaultTableModel(null,new


String[] {"Id","---Nombre---","Descripcion"});
cn=DriverManager.getConnection(url); //Aqui hacer el trow
declaration
ps=cn.prepareStatement("select * from tblEspecialidad");
rs=ps.executeQuery();
while (rs.next()) {
model.addRow(new Object [] {
rs.getInt(1),
rs.getString(2),
rs.getString(3)
});
}
grilla.setModel(model);
cn.close();

ahora cargaremos los datos en tipo para ello usamos el


siguiente codigo
//METODO 2

private void cargarTipos() {


DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement("Carrera");
model.addElement("Transversal");
cbxTipo.setModel(model);

llamarlo debajo del trycatch


try {
cargarCursos();
cargarTipos();

AHORA METODO 3

//metodo 2
private void cargarEspe() throws SQLException {

DefaultComboBoxModel model = new DefaultComboBoxModel();


cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("select * from tblEspecialidad");
rs=ps.executeQuery();
while (rs.next()) {
model.addElement(rs.getString(2));
}
cbxidEspecialidad.setModel(model);
cn.close();

CARGAMOS cargarEspe en el trycatch


private void cargarEspe() throws SQLException {
DefaultComboBoxModel model = new DefaultComboBoxModel();
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("select * from tblEspecialidad");
rs=ps.executeQuery();
model.insertElementAt("---Seleccione---", 0);
while (rs.next()) {
model.addElement(rs.getString(2));
}
cbxidEspecialidad.setModel(model);
cbxidEspecialidad.setSelectedIndex(0);
cn.close();

creamos otra clase llamada ObjetoCombo

usamos programacion orientada a objetos

public class ObjetoCombo {


private int valor; //el valor real
private String texto; //el texto a mostrar

public ObjetoCombo(String texto,int valor) { //asignacion de


parametros a los campos de clase
this.texto=texto;
this.valor=valor;
}
public int obtenerValor() { //metodo para obtener solo el valor
return this.valor;
}

@Override
public String toString() { //metodo para obtener solo el texto
(implicito)
// TODO Auto-generated method stub
return this.texto;
}

y luego cambiamos una linea de codigo en el metodo 2

//metodo 2
private void cargarEspe() throws SQLException {

DefaultComboBoxModel model = new DefaultComboBoxModel();


cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("select * from tblEspecialidad");
rs=ps.executeQuery();
model.insertElementAt("---Seleccione---", 0);
while (rs.next()) {

//model.addElement(rs.getString(2));
// instancia texto(nombre)
valor(idCurso)
model.addElement(new ObjetoCombo(rs.getString(2),
rs.getInt(1)));

}
cbxidEspecialidad.setModel(model);
cbxidEspecialidad.setSelectedIndex(0);
cn.close();

ahora implementamos el boton guardar

JButton btnGuardar = new JButton("Guardar");


btnGuardar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Codigo Aqui
try {
guardarCurso();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

private void guardarCurso() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
//
1 2 3 4 1
2 3 4
ps=cn.prepareStatement("insert into
tblCurso(Nombre,Tipo,Creditos,idEspecialidad) values (?,?,?,?)");
//binding nro1
ps.setString(1, txtNombre.getText());
//binding nro2
ps.setString(2,
String.valueOf(cbxTipo.getSelectedItem()));
//binding nro3
ps.setInt(3,
Integer.parseInt(txtCreditos.getText()));
//binding nro4
ObjetoCombo objEspe=(ObjetoCombo)
cbxidEspecialidad.getSelectedItem();
ps.setInt(4, objEspe.obtenerValor());
//ejecucion de la operacion
ps.execute();
cn.close();
JOptionPane.showMessageDialog(null, "Datos
Guardados");
cargarCursos();
}
});
CODIGO COMPLETO PERO USANDO PROCEDIMIENTOS ALMACENADOS ESO SIGNIFICA
QUE HACEMOS UN PROCEDIMIENTO ALMACENADO EN LA UNA QUERY DE SQL Y DESPUES
LO PASAMOS AL JAVA (ANALIZAR CODIGO)

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Especialidad extends JFrame {

private JPanel contentPane;


private JTable grilla;

private String url


="jdbc:sqlserver://localhost;DataBase=Demo_ILS;User=ils;Password=123";
private Connection cn;
private PreparedStatement ps;
private CallableStatement cs; //Objeto para la llamada a los
procedimientos almacenados
private ResultSet rs;
private JTextField txtIDespecialidad;
private JTextField txtNombre;
private JTextField txtDescripcion;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Especialidad frame = new Especialidad();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Especialidad() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 666, 439);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JScrollPane scrollPane = new JScrollPane();


scrollPane.setBounds(35, 252, 559, 114);
contentPane.add(scrollPane);

grilla = new JTable();


grilla.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//Carga de datos de los registros seleccionados
//en los controles independientes
//System.out.println(grilla.getSelectedRow());
//Seleciona la fila

/*System.out.println(grilla.getValueAt(grilla.getSelectedRow(),
0));

System.out.println(grilla.getValueAt(grilla.getSelectedRow(), 1));

System.out.println(grilla.getValueAt(grilla.getSelectedRow(),
2));*/

txtIDespecialidad.setText(String.valueOf(grilla.getValueAt(grilla.getSele
ctedRow(), 0)));

txtNombre.setText(String.valueOf(grilla.getValueAt(grilla.getSelectedRow(
), 1)));
txtDescripcion.setText(String.valueOf(grilla.getValueAt(grilla.getSelecte
dRow(), 2)));
}
});
scrollPane.setViewportView(grilla);

JLabel lblNewLabel = new JLabel("ID ESPECIALIDAD");


lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblNewLabel.setBounds(35, 25, 136, 23);
contentPane.add(lblNewLabel);

JLabel lblNewLabel_1 = new JLabel("NOMBRE");


lblNewLabel_1.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblNewLabel_1.setBounds(35, 74, 82, 23);
contentPane.add(lblNewLabel_1);

JLabel lblNewLabel_2 = new JLabel("DESCRIPCION");


lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 14));
lblNewLabel_2.setBounds(35, 128, 136, 23);
contentPane.add(lblNewLabel_2);

txtIDespecialidad = new JTextField();


txtIDespecialidad.setBounds(181, 22, 288, 34);
contentPane.add(txtIDespecialidad);
txtIDespecialidad.setColumns(10);

txtNombre = new JTextField();


txtNombre.setBounds(181, 71, 288, 34);
contentPane.add(txtNombre);
txtNombre.setColumns(10);

txtDescripcion = new JTextField();


txtDescripcion.setBounds(181, 125, 288, 34);
contentPane.add(txtDescripcion);
txtDescripcion.setColumns(10);

JButton btnGuardar = new JButton("GUARDAR");


btnGuardar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
guardarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void guardarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
//ps=cn.prepareStatement("INSERT INTO
tblEspecialidad(Nombre,Descripcion) VALUES (?,?);");
cs=cn.prepareCall("{call AgregarEspecialidad
(?,?)}");
cs.setString(1, txtNombre.getText());
cs.setString(2, txtDescripcion.getText());
//ps.setString(1, txtNombre.getText());
//ps.setString(2, txtDescripcion.getText());
//ps.execute();
cs.execute();
cn.close();
JOptionPane.showMessageDialog(null, "Datos
Guardados");
cargarEspe();

}
});
btnGuardar.setFont(new Font("Tahoma", Font.PLAIN, 14));
btnGuardar.setBounds(32, 198, 136, 34);
contentPane.add(btnGuardar);

JButton btnModificar = new JButton("MODIFICAR");


btnModificar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
modificarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void modificarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("UPDATE tblEspecialidad SET
Nombre=?, Descripcion=? WHERE idEspecialidad=?");
ps.setString(1, txtNombre.getText());
ps.setString(2, txtDescripcion.getText());
ps.setInt(3,
Integer.parseInt(txtIDespecialidad.getText()));
ps.execute();
ps.close();
JOptionPane.showMessageDialog(null, "Datos
Modificadores");
cargarEspe();
}
});
btnModificar.setFont(new Font("Tahoma", Font.PLAIN, 14));
btnModificar.setBounds(219, 198, 136, 30);
contentPane.add(btnModificar);

JButton btnBorrar = new JButton("BORRAR");


btnBorrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Codigo para borrar
try {
borrarEspe();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

private void borrarEspe() throws SQLException {


// TODO Auto-generated method stub
cn=DriverManager.getConnection(url);
ps=cn.prepareStatement("Delete from tblEspecialidad
where idEspecialidad=?");

ps.setInt(1,Integer.parseInt(txtIDespecialidad.getText()));
ps.execute();
cn.close();
JOptionPane.showMessageDialog(null,
"DatosBorrados");
cargarEspe();
}
});
btnBorrar.setFont(new Font("Tahoma", Font.PLAIN, 14));
btnBorrar.setBounds(405, 198, 136, 30);
contentPane.add(btnBorrar);
//Llamada al método de carga
try {
cargarEspe();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

// Implementacion de nuestro método de cargar


private void cargarEspe() throws SQLException {
DefaultTableModel model = new DefaultTableModel(null,new
String[] {"Id","---Nombre---","Descripcion"});

cn=DriverManager.getConnection(url);
//ps=cn.prepareStatement("select * from tblEspecialidad");
cs = cn.prepareCall("{call CargarEspecialidades}");
//rs=ps.executeQuery();
rs=cs.executeQuery();
while (rs.next()) {
model.addRow(new Object [] {
rs.getInt(1),
rs.getString(2),
rs.getString(3)
});
}
grilla.setModel(model);
cn.close();

}
}

También podría gustarte