0% encontró este documento útil (0 votos)
70 vistas

Conectar Java Con MySQL

El documento describe cómo crear una aplicación Java que se conecta a una base de datos MySQL para cargar datos en una interfaz gráfica. Se crean tres tablas (estudiante, asignatura, nota) en la base de datos. Luego, el proyecto Java incluye paquetes para el acceso a datos y la interfaz gráfica. El paquete de acceso a datos incluye clases para la conexión a la base de datos y la manipulación de datos de estudiantes y notas. El paquete de interfaz gráfica contiene una clase que define una

Cargado por

Josean Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas

Conectar Java Con MySQL

El documento describe cómo crear una aplicación Java que se conecta a una base de datos MySQL para cargar datos en una interfaz gráfica. Se crean tres tablas (estudiante, asignatura, nota) en la base de datos. Luego, el proyecto Java incluye paquetes para el acceso a datos y la interfaz gráfica. El paquete de acceso a datos incluye clases para la conexión a la base de datos y la manipulación de datos de estudiantes y notas. El paquete de interfaz gráfica contiene una clase que define una

Cargado por

Josean Lopez
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

Conectar Java con MySQL

Hoy vamos a ver como podemos crear un aplicativo en java que se conecte a una base de
datos MySQL y nos cargue unos datos en una interfaz grfica sencilla.

Para este ejercicio se ha creado una base de datos llamada clase que tiene tres tablas:
estudiante, asignatura y nota; para la creacin de estas tablas ejecutamos este script de la
base de datos.
CREATE DATABASE `clase`;
CREATE TABLE `asignatura` (
`asi_codigo` varchar(6) NOT NULL,
`asi_nombre` varchar(60) NOT NULL,
PRIMARY KEY (`asi_codigo`)
);
INSERT INTO `asignatura` VALUES('201502','Algebra'),
('201501','Matemticas'),
('301502','Programacin orientada a objetos'),
('301501','Programacin bsica');
CREATE TABLE `estudiante` (
`est_codigo` varchar(11) NOT NULL,
`est_nombre` varchar(100) NOT NULL,
PRIMARY KEY (`est_codigo`)
);
INSERT INTO `estudiante` VALUES ('2007202004','Alvarez Juan Jose'),
('2007202003','Espitia Maldonado Ana Julieth'),
('2007202002','Mendez Maria'),
('2007202001','Diaz Perez Juan Diego'),
('2007202007','Olguin Ricaute Manuel'),
('2007202006','Miranda Perez Juan'),
('2007202005','Triana Maria');
CREATE TABLE `nota` (
`est_codigo` varchar(11) NOT NULL,
`asi_codigo` varchar(6) NOT NULL,
`nota` double NOT NULL,

PRIMARY KEY (`est_codigo`,`asi_codigo`)


);
INSERT INTO `nota` VALUES('2007202001','201502',5),
('2007202002','201502',4.3),
('2007202003','201502',2.3),
('2007202004','201502',3.3),
('2007202001','201501',4),
('2007202002','201501',2.8),
('2007202003','201501',1.5),
('2007202004','201501',4.3),
('2007202001','301502',2.2),
('2007202002','301502',4.5),
('2007202003','301502',1.9),
('2007202004','301502',4.3),
('2007202001','301501',4.9),
('2007202002','301501',5),
('2007202003','301501',4.3),
('2007202004','301501',4);
Una ves que tenemos la base de datos creada, creamos un nuevo proyecto en eclipse, una
ves creado el proyecto hacemos click derecho con el ratn sobre el nombre del proyecto y
seleccionamos la opcin de propiedades, en esta ventana seleccionamos la opcin de "Java
Build Path" y en esta la pestaa "Libraries", dentro de esta hacemos click sobre el botn "Add
External Jars..." y buscamos elmysql-conector-java que podemos descargar de la pagina
de MySQL, y hacemos click en aceptar.

Este .jar es el que nos va permitir conectarnos con


mysql y hacer consultas a la base de datos.
Despus de haber asociado el conectorJ al proyecto creamos dos paquetes para separar el
acceso a datos con la interfaz grfica de usuario, en mi caso he llamados a estos paquetes
as:
co.madesoft.db para el acceso a datos
co.madesoft.gui para la interfaz grfica de usuario
en el primero creamos las siguientes clases:
DbConnection para la conexion con la base de datos

package co.madesoft.db;
import java.sql.*;
/**
* Clase que permite conectar con la base de datos
* @author alejo
*/
public class DbConnection {
static String bd = "clase";
static String login = "root";
static String password = "";
static String url = "jdbc:mysql://localhost/"+bd;
Connection conn = null;
/** Constructor de DbConnection */
public DbConnection() {
try{
//obtenemos el driver de para mysql
Class.forName("com.mysql.jdbc.Driver");
//obtenemos la conexin
conn = DriverManager.getConnection(url,login,password);
if (conn!=null){
System.out.println("Coneccin a base de datos "+bd+" OK");
}
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
/**Permite retornar la conexin*/
public Connection getConnection(){
return conn;
}
public void desconectar(){
conn = null;
}
}

DbEstudiante para la manipulacin de la tabla estudiante


package co.madesoft.db;
import java.sql.*;
public class DbEstudiante {

DbConnection cn;
/** Constructor de DbUser */
public DbEstudiante() {
cn = new DbConnection();
}
/** Obtiene las notas de un estudiante por su codigo */
public Object[][] getNotasByEstudiante(String cod){
int registros = 0;
try{
Statement stm = cn.getConnection().createStatement();
PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as
cont" +
" FROM asignatura a " +
" inner join nota n on a.asi_codigo = n.asi_codigo" +
" where n.est_codigo = ? ");
pstm.setString(1, cod);
ResultSet res = pstm.executeQuery();
res.next();
registros = res.getInt("cont");
res.close();
}catch(SQLException e){
System.out.println(e);
}
Object [][] data = new Object[registros][5];
try{
Statement stm = cn.getConnection().createStatement();
PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT n.asi_codigo,
"+
"
"
"
"
"

a.asi_nombre, " +
n.nota " +
FROM asignatura a " +
inner join nota n on a.asi_codigo = n.asi_codigo " +
where n.est_codigo = ? order by n.asi_codigo ");

pstm.setString(1, cod);
ResultSet res = pstm.executeQuery();
int i = 0;
while(res.next()){
String asiCodigo = res.getString("asi_codigo");
String asiNombre = res.getString("asi_nombre");
Double asiNota = res.getDouble("nota");
data[i][0] = asiCodigo;
data[i][1] = asiNombre;
data[i][2] = asiNota;
i++;

}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}
/** trae todos los estudiantes */
public Object[][] getEstudiantes(){
int registros = 0;
try{
Statement stm = cn.getConnection().createStatement();
PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as
cont" +
" FROM estudiante ");
ResultSet res = pstm.executeQuery();
res.next();
registros = res.getInt("cont");
res.close();
}catch(SQLException e){
System.out.println(e);
}
Object [][] data = new Object[registros][5];
try{
Statement stm = cn.getConnection().createStatement();
PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT est_codigo, "
+
" est_nombre " +
" FROM estudiante " +
" ORDER BY est_codigo ");

ResultSet res = pstm.executeQuery();


int i = 0;
while(res.next()){
String estCodigo = res.getString("est_codigo");
String estNombre = res.getString("est_nombre");
data[i][0] = estCodigo;
data[i][1] = estNombre;
i++;
}
res.close();
}catch(SQLException e){
System.out.println(e);
}
return data;
}
}

En el segundo paquete creamos tan solo la clase que define la interfaz grfica que nos
muestra los datos retornados por los mtodos de la clase anterior. Esta clase implemeta
aparte de los elementos que se manejan comunmente en una intrefaz de usuario los
siguientes elementos: JScrollPane, DefaultTableModel, JTable para los cuales se puede verificar
el codigo y entender su uso o consultar cualquier tuorial de swing .
package co.madesoft.gui;
import
import
import
import

javax.swing.*;
javax.swing.table.*;
java.awt.*;
java.awt.event.*;

import co.madesoft.db.*;
public class GuiEstudiante implements ActionListener {
JFrame frame;
JScrollPane spEstudiantes,spNotas;
DefaultTableModel dtmEstudiantes,dtmNotas;
JTable jtbEstudiantes,jtbNotas;
JPanel pnlEstudiantes;
JLabel lblCodigo,lblNombre;
JTextField txtCodigo,txtNombre;
Object[][] dtEstudiantes;
Object[][] dtNotas;
DbEstudiante us = new DbEstudiante();
int fila = -1;
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
GuiEstudiante g = new GuiEstudiante();
}
public GuiEstudiante(){
frame = new JFrame("Notas de estudiantes");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
dtEstudiantes = us.getEstudiantes();
String[] columNames = {"codigo","nombres"};
dtmEstudiantes= new DefaultTableModel(dtEstudiantes, columNames);
String[] columNamesNotas = {"codigo","asignatura","nota"};
dtmNotas = new DefaultTableModel(dtNotas,columNamesNotas);
jtbEstudiantes = new JTable(dtmEstudiantes);
jtbEstudiantes.setPreferredScrollableViewportSize(new Dimension(500, 120));
jtbNotas = new JTable(dtmNotas);

jtbNotas.setPreferredScrollableViewportSize(new Dimension(500,80));
spEstudiantes = new JScrollPane(jtbEstudiantes);
spNotas = new JScrollPane(jtbNotas);
lblCodigo = new JLabel("Codigo");
lblNombre = new JLabel("Nombre");
txtCodigo = new JTextField(10);
txtNombre = new JTextField(10);
pnlEstudiantes = new JPanel(new GridLayout(2,2));
pnlEstudiantes.add(lblCodigo);
pnlEstudiantes.add(txtCodigo);
pnlEstudiantes.add(lblNombre);
pnlEstudiantes.add(txtNombre);
jtbEstudiantes.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
fila = jtbEstudiantes.rowAtPoint(e.getPoint());
int columna = jtbEstudiantes.columnAtPoint(e.getPoint());
if ((fila > -1) && (columna > -1)){
txtCodigo.setText(String.valueOf(jtbEstudiantes.getValueAt(fila,0)));
txtNombre.setText(String.valueOf(jtbEstudiantes.getValueAt(fila,1)));
dtNotas =
us.getNotasByEstudiante(String.valueOf(jtbEstudiantes.getValueAt(fila,0)));
int contRows = dtmNotas.getRowCount();
for(int i=0;i<contRows;i++){
dtmNotas.removeRow(0);
}
for(int i=0;i<dtNotas.length;i++){
Object[] newRow={dtNotas[i][0],dtNotas[i][1],dtNotas[i][2]};
dtmNotas.addRow(newRow);
}
}
}
});
frame.getContentPane().add(spEstudiantes,BorderLayout.NORTH);
frame.getContentPane().add(pnlEstudiantes,BorderLayout.CENTER);
frame.getContentPane().add(spNotas,BorderLayout.SOUTH);
frame.pack();
frame.setResizable(false);
frame.setLocationRelativeTo(frame.getParent());
frame.setVisible(true);
}
public void limpiarCampos(){
txtCodigo.setText("");

txtNombre.setText("");
}
public void actionPerformed(ActionEvent e){
int resultado = -1;
}
}

Ya solo nos resta compilar y ejecutar y tendremos corriendo nuestro aplicativo que nos
muestra una lista de estudiantes en una tabla y las notas de cada uno de ellos en otra segun
seleccionemos un estudiante de la primera tabla.

También podría gustarte