
Para este ejercicio se ha creado una base de datos llamada clase que tiene tres tablas: estudiante, asignatura y nota; para la creación 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','Matemáticas'),
('301502','Programación orientada a objetos'),
('301501','Programación básica');
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 ratón sobre el nombre del proyecto y seleccionamos la opción de propiedades, en esta ventana seleccionamos la opción de "Java Build Path" y en esta la pestaña "Libraries", dentro de esta hacemos click sobre el botón "Add External Jars..." y buscamos el mysql-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.Después de haber asociado el conectorJ al proyecto creamos dos paquetes para separar el acceso a datos con la interfaz gráfica 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 gráfica de usuario
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 conexión
conn = DriverManager.getConnection(url,login,password);
if (conn!=null){
System.out.println("Conección a base de datos "+bd+" OK");
}
}catch(SQLException e){
System.out.println(e);
}catch(ClassNotFoundException e){
System.out.println(e);
}
}
/**Permite retornar la conexión*/
public Connection getConnection(){
return conn;
}
public void desconectar(){
conn = null;
}
}
DbEstudiante para la manipulación 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 gráfica que nos muestra los datos retornados por los métodos 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 javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import 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.

98 comentarios:
Bueno y simple...
Me fue de mucha ayuda.
Gracias
Hola amigo, muy util la informacion, pero me queda una duda, si quiero pasar mi aplicacion en java a otra computadora ¿como lo hago para pasarla con todo y base de datos de manera que en otra computadora tambien funcione? Tienes alguna idea? Te agradeceria cualquier informacion.
Robert es solo cosa de hacer un "volcado" de la base de datos, este volcado te genera un archivo que contiene todos los comandos SQL para generar un espejo de la base de datos en el equipo que quieras.
El comando para esto es mysqldump, el cual tiene la siguiente forma:
mysqldump -u usuario basededatos > archivo.sql
Si mysql tiene los usuarios con clave entonces:
mysqldump -u usuario -p basededatos > archivo.sql
y te pedirá el password cuando presiones enter.
este comando lo ejecutas desde cualquier consola
Hey Gracias!!, pues si, era tan simple como eso, ahora ya tengo la base de datos en un archivo SQL, pero entonces si quiero usar mi programa en Java desde cualquier otra computadora, tengo que instalar en esa computadora MySQL forzosamente? No puedo acceder a la base de datos directamente?, y suponiendo que no se pueda, en el otro equipo como importo ese archivo SQL que genere?. ¿y que pasa con el archivo del driver que conecta Java con Mysql? ¿Tambien lo tengo que copiar en cada computadora en la que use mi programa? jeje Disculpa tanta pregunta, pero es que no encuentro informacion sobre como portar aplicaciones Java con bases de datos.
Gracias por tu respuesta anterior ;) Tus articulos son muy utiles.
Robert, recuerda que puedes apuntar la conexión de mysql a cualquier host dentro de una red, cambiando en la cadena url de la clase DbConection la palabra localhost por la ip del equipo donde esta montado mysql con tu base de datos.
Esta bueno, deberias de publicar mas..... Gracias
Cordial saludo,
revisando la informaciòn me surgiò la siguiente duda: què clase de configuraciòn requiere el servidor para que acepte conexiones remotas?. Cuando intento conectarme a la base de datos obtengo el siguiente error:
host xxx.xxx.xxx.xx is not allowed to connect to this MySqlServer.
Okaru si no estoy mal el usuario con el que te estas conectando a mysql debe estar configurado para conectarse desde cualquier ip, verifica si existe un usuario en mysql con estas características
Muchas gracias por la ayuda estaba buscando esto hace rato, me gustaría que siga con otros ejemplos son de mucha ayuda
mi problema es el siguiente resulta que tengo todo lo necesario para conectarme a mysql con JDBC ..
en mi casa todo funciona a la perfeccion..
tengo el source de la base de datos
en un archivo .sql, un codigo de testconection.java y el driver
_____
translado el driver, el codigo, el
archivo de la base de datos
al PC de mi novia
creo la base de datos, verifico que muestre los datos. todo bien
pero cuando intento correr el bytecode no se ejecuta.
lo corro desde consola con:
java testconection
me dice que no se encuentra el driver, y resulta que ya esta incluido en la variable de entorno Classpath.
gracias de antemano por la ayuda que me puedan brindar.
Oircr10, el problema es que el esta buscando el driver en el bin del proyecto, debes exportarlo junto con el proyecto para que el lo agregue
Hola Alejo
Excelente material, me sirvió de mucho, después de algunos detalles logré ver la aplicación. sin embargo tengo una duda en Eclipse como lo compilo o lo hago ejecutable para llevarlo a otro equipo, para portar la base de datos no tengo problemas, solo para llevarme el programa sin el código fuente.
Por tu atención Gracias.
Respondiendo una duda anónima, para llevarse un aplicativo a otro equipo sin llevarse el código fuente se debe generar un jar del aplicativo, eclipse tiene una opción para exportar el proyecto, en el caso de un aplicativo con conexión a mysql se debe agregar el jar del mysql connector/j a las opciones de exportar el proyecto para que lo adjunte de manera apropiada.
tratare de crear una entrada con un paso a paso que ejemplifique este proceso.
Estimado amigo, corri tu ejemplo de conexion de de swing con mysql pero me genera esto errores
Exception in thread main
java.lang.NullPointerException
at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:55)
at co.madesoft.db.GuiEstudiante.init(GuiEstudiante.java:30)
at co.madesoft.db.GuiEstudiante.main(GuiEstudiante.java:24)
La verad no he podido encontrar estos errores, me pudeds colaborar
correo:williamrm16@yahoo.es
un ejemplo muy claro y corre perfectamente, con algunos cambio se puede utilizar para cualquier base, usuario y asta con otro motor de base de datos orecle o sql, gracias
Hola Mi Nombre es Ana y me intereso mucho tu ejemplo pero me salen varios errores que no se como quitar yo estoy utilizando dos IDES el Netbeans y el Jcreator en ambos me marcan los siguientes errores:
Exception in thread main
java.lang.NullPointerException
at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:55)
at co.madesoft.db.GuiEstudiante.init(GuiEstudiante.java:30)
at co.madesoft.db.GuiEstudiante.main(GuiEstudiante.java:24)
instal el conector y verifique que la conexion se estableciera con MySQL pero aun asi no funciona y ya no se que mas hacer ojala me pudieras ayudar.
Sweet_Baby08@live.com
Ana según parece tu error parte del método "getNotasByEstudiante", y desde este se propaga, así que solo tienes un error.
Los errores de "NullPointerException" se producen por tratar de usar elementos no instanciados, para poderte ayudar con exactitud me podrías decir que código tienes en la linea 55 de la clase DbEstudiante.
Gracias
Hola Gracias por tu respuesta en la linea que me mencionas (55) solo aparece i++; de la clase DbEstudiante pero no me parece que el error este ahi igual espero pronto tu respuesta de todas formas seguire intentando.
Gracias
Chau
Genial el tutorial , pero una preguntotota, soy nuevo en esto del java, no me podrias poner un ejemplito para insertar informacion a este ejemplo?
Espero tengas piedad de mi :) o si ya lo tienes comentame donde esta :) porque no lo encontre
Buenas, lei el ejemplo y me gusto. Simple y bueno.
La verdad es que llegue aqui porque tengo un proyecto en Java y MySQL que hize hace como 1 año y medio en NetBeans 5.0 y que me corre perfectamente en Windows pero no me corre en Linux.
Me compila pero no me ejecuta. Me larga error cuando quiere crear la sesion de Hibernate.
La pregunta es.... el conector JAVA/MySQL que use para windows....será valido tambien para Linux? Es probable que ahi este el error? Si me puedes dar una mano lo agradeceria. Mi correo es diegocaliri@gmail.com
Gracias
Saludos
Diego, el conector de mysql funciona tanto en windows como en linux, y el error que produce debe ser en tiempo de ejecución, no se me atrevería a decir que es la configuración para la obtención del driver de conexión, pero debes mirar cual es el error que te reporta
Hola alejo,
Soy nuevo, extremadamente nuevo. No puedo hacer correr el programa.
Creo que el problema esta en la base de datos que no se como utilizar, puedes darme mas indicaciones acerca de como utilizar mysql, yo cogí tu script lo copié en un .txt que luego cambie de nombre con la terminación .sql y con MySQL Workbench 5.0 OSS lo importé lo guarde con terminación .mwb y de ahí no se que mas hacer... tenme paciencia... pero es la primera vez que utilizo mysql, soy estudiante y no me gusta seguir a la manada y hacer en ms sql server,,, me gusta ser libre, libre como el viento, no creo que sea pecado, he tratado de leer los manuales pero no van directo al grano o no se buscar la información de manera correcta quizá porque el ingles no es mi idioma natal.
Luego para no perder tiempo hice todo lo que indicaste y me salio este error:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
Exception in thread "main" java.lang.NullPointerException
at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:67)
at co.madesoft.gui.GuiEstudiante.init(GuiEstudiante.java:33)
at co.madesoft.gui.GuiEstudiante.main(GuiEstudiante.java:26)
gracias, espero me ayudes y comprendas...
Hola Andrés
El error que te está reportando es por la configuración de la conexión, verifica que password tiene el usuario "root" en el servidor de mysql que instalaste y dale ese valor al parámetro correspondiente en la clase DBConexion que es la que se encarga de esto en el ejemplo, espero que esto resuelva tu duda
Gracias Alejo por tu ayuda no creí que me ayudarías tan rápido en efecto si era la clave, pero ahora me sale este error en la consola:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'clase'
Exception in thread "main" java.lang.NullPointerException
at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:67)
at co.madesoft.gui.GuiEstudiante.init(GuiEstudiante.java:33)
at co.madesoft.gui.GuiEstudiante.main(GuiEstudiante.java:26)
Me doy cuenta que no existe la base de datos: clase pues es obvio que no le he creado a la bdd, ademas de libre el pecado que tengo también es ser algo vago y me da una vagancia hacerle ala consola todo tu script a mano así que consultando he visto que puedo usar un comando SOURCE pero no puedo hacerlo funcionar, podrías ayudarme o darme alguna idea de como utilizar ese comando yo tengo tu script en un archivo muy bonito llamado PruebaMySQL1.sql en el escritorio y de ahí no se que mas hacer....
Se que tu has hecho este blog para ayudar a sacar de la ignorancia a aquellos que desean ser por decir, menos ignorantes, gracias por eso... espero tu respuesta...
PD: ya estas entre mis blogs favoritos...
Hola Andrés:
No tienes que estrictamente manejar todo por consola, hay programas gráficos o "ides" que te sirven para interactuar con mysql por ejemplo el query browser de mysql desde donde puedes crear la base de datos o "Schema" y luego abrir el sript para ejecutarlo en esa base de datos y asi no tener que "moler" todo desde la consola, jeje.
Me alegra que las personas se preocupen por aprender cada día un poco más y si puedo aportar algo en ese proceso mucho mejor.
Gracias alejo...
Muchísimas gracias... sabiendo esos pocos datos ya pude encontrar un vídeo explicativo del ide en youtube.com, por si a alguien le interesa evitarse la búsqueda... el vídeo puede encontrarlo por el siguiente link:
http://www.youtube.com/watch?v=uSBCddZRvqo
Hice todo y no me sale error alguno solo un par de warnings (6 para ser exactos) pero por lo que he sufrido me conformo (me conformare esta vez)...
Con lo que si no me conformo es que no me sale ningún dato como los que te salen a ti en esa imagen del inicio, me late que algo paso con el script que no sirvieron los INSERT no se si podrás ayudarme con esta ultima pregunta no se si este mensaje que me sale en consola te ayude a identificar el problema:
Conección a base de datos clase OK
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'clase.estudiante' doesn't exist
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'clase.estudiante' doesn't exist
Espero esta sea ya la ultima pregunta y no cansarte con mi ignorancia extrema... gracias de antemano...
PD: Luego de consultar más sobre la consola, comprobé si la tabla estudiante tenia datos y esta bien todo, y así es,,, todo aparentemente esta bien... no tengo ni idea de porque me sale ese mensaje..... en la consola diciéndome que la tabla no existe... Uhmmm.... que mal... me siento un inútil...jejeje
Hola Andrés:
El error que te aparece es la no existencia de la tabla en la base de datos, haz una prueba desde el query browser y escribe las siguientes lineas:
use clase;
select * from estudiante;
si te aparecen los datos sin error nos toca ver mas a detalle que te aparece
Aja hice lo que me dijiste y un error me decía que no existía la tabla estudiante, así que me percate que la base de datos clase no tenia ninguna tabla (las 3) y que otra base de datos llamada mysql tenia esas mismas 3 tablas así que le hice doble clic a la base de datos y volví a correr el script... jejeje creo que me equivoque en algo del vídeo de joutube.com....
Que raro que por medio de la consola si me aparecían esos datos, ahora comprendo la utilidad del query browser..... no me parecía utilizarlo, ya que porque instalarlo si puedo hacer lo mismo con par de comandos pero ahora si me doy cuenta que no solo te ayuda a hacer las cosas mas fáciles sino también a identificar más rápidamente los errores...
Estoy muy feliz, gracias, muchas gracias, hoy día a sido muy productivo, ahora una duda que se me acaba de llegar a la mente..... si quiero correr tu programa en la computadora de mi novia, tengo que: copiar en una memory el MySQL Server 5.0, el MySQL Administrator, el MySQL Query Browser, y el script... obviemos el javaEclipse porque ya lo tiene, me falta algo? o no es necesario llevar todo?
O podría llevar el ejecutable del programa? y que mas necesitaría?
Bueno de todas formas ya has hecho mucho por mi, no espero una respuesta inmediata, otra ves y mil veces mas gracias... muchas gracias Alejo por tu tiempo que es lo mas valioso que puedes ofrecer a otra persona mas si es un extraño... continua sacando de la ignorancia a quienes no quieren permanecer en la oscuridad....
Suerte!!!...
heeeee.... otra duda.... al ejecutar el programa me percaté que si le doy doble clic puedo editar tanto el nombre como el codigo del estudiante.
Habría forma alguna de que yo pueda a través del programa cambiar los datos de la bdd? Que me sugieres buscar en la web?
uhmmm... me siento un poco abusivo, espero no te moleste...
saludos...
Hola Andrés:
Nunca me ha parecido abusivo el deseo de aprender, me alegra que te intereses por este apasionante mundo y me alegra aun más poder brindar el conocimiento que alguna ves me brindaron a mi y que sigo adquiriendo.
Respecto al llevarte el aplicativo a otro equipo, dale una leída a las respuestas dadas a Robert que alguna vez me planteo una duda similar a la tuya y en cuanto a la edición de datos desde una interfaz echa en java espero en estos días crear una entrada con un ejemplo completo basado en una agenda que espero también sea de utilidad para todos.
Gracias alejo, de ley que si hay comentarios al respecto a la primera duda con relación a la segunda seria genial que lo hicieras tanto en ese nuevo ejemplo de la agenda como en este, estaré esperando la entrada acerca de esto impacientemente....
Muchas gracias otra ves...
Saludos desde la hermana República del Ecuador...
Hola Alejandro... Si otra vez yo... no se a quien pedir ayuda ya se acerca la fecha final para presentar proyectos y tengo un problema con mysql que quisiera me des una orientacion....
El hecho es que... en la materia de desarrollo de software me mandaron a hacer un lindo proyecto en visual basic 2005 .net me quedo del pelos y utilice una base de datos mysql... el chiste es que para ejecutar mi programa es necesario pasar la carpetita del proyecto y correr el script de la base de datos que he utilizado ademas del connector/net..... asi que el problema no es ese sino que tengo que hacer un instalador que no le haga lio al cliente (profesor)......
ASI que en resumidas cuentas deseo si me puedes decir de algun programa que me ayude a hacer un instalador de mi aplicacion (ponga una carpetita en archivos de programa y accesos directos en escritorio y menu de inicio) luego que instale el mysql server luego que se ejecute el script... no se si puedas ayudarme te agradeceria un monton... no tengo a quien mas pedirle ayuda y es para el jueves...
Hola Alejandro... gracias por la ayuda brindada de antemano, en la GUI 'GuiEstudiante' capturas todos los estudiantes en el Arreglo bidimensional Object [][] dtEstudiantes, por favor aca necesito saber como extraer los datos de cada celda(fila,columna) sin la necesidad de usar -> dtmEstudiantes = new DefaultTableModel(dtEstudiantes, columNames);
... ademas para poder hacer un update o un insert tambien como deberia llevar el arreglo Object para ejecutar mi query
gracias por la ayuda... Carlos FISI
... Disculpa me olvide de algo si manejo diferentes tipos de datos como varchar, integer, float, date en mi tabla como deberia de cargarlo o todo tipo de dato lo transformo a tipo String cuando hago uso de ResultSet en la clase que manipula de la tabla, y si deseo hacer insert o update como implementaria el arreglo de Object para ejecutarlo en mi query... muchas graciasss Alejo
Hola que tal, buenisima tu ayuda, sin embargo me gustaria si es posible, me des una mano en lo siguiente. En clases me pidieron que pudiera añadir datos a una BD desde una Vista de Diseño (Formulario), y pueda Agregar, Modificar y Consultar los datos en la BD a traves de eventos con botones en el Contendor, ya tengo la vista la conexion pero me falta realizar los envios para la BD y las consultar. Sera posible tu ayuda?
Buenos Dia, alguien podria ayudarme
ya Realice todo lo que indica el procedimento pero al momento de compilar me presenta el siguiente error...
DbEstudiante.java:50: incompatible types
found : double
required: java.lang.Double
Double asiNota = res.getDouble("nota");
^
1 error
hola solo quisiera aprender mysql no se si de alguna manera me pueda ayudar este es mi correo por si quiere comunicarse con migo soy estudiante kyo2_9@hotmail.com
Hola para quien pregunto si lo puedo ayudar a aprender mysql, si, si puedo y con mucho gusto lo haré, por ahora empieza por ver la entrada de instalación de mysql y luego publicare una donde haremos un ejercicio de creación de una base de datos paso a paso, gracias por seguir visitando el blog y les pido disculpas por tener la publicación en pausa, pero he tenido muchas cosas que hacer entre el trabajo y los estudios, gracias nuevamente
Saludos
Por favor necesito ayuda... Este ejemplo lo corri hace una semana y perfecto pero hoy en otra maquina no se porque me sta dando este error
Exception in thread "main" java.lang.NullPointerException
at co.madesoft.db.DbEstudiante.getEstudiantes(DbEstudiante.java:62)
at co.madesoft.gui.GuiEstudiante.(init)(GuiEstudiante.java:31)
at co.madesoft.gui.GuiEstudiante.main(GuiEstudiante.java:25)
en la linea:
Statement stm = cn.getConnection().createStatement();
Gracias
Despues de estar 4 hrs tratando de resolver el error... me di cuenta que no habia descomprimido el .zip mysql-connector-java-5.1.6 en un directorio y de ahi usar el .jar estaba usando directamente en las librerias el .zip. Parece muy tonto pero puede ocurrir... Bueno suerte para todos y sigamos aprendiendo mi correo es isaacwi@gmail.com
Muy buenos datos, muy didactico para aprender conexiones java-mysql
Gracias
Muy didactico para aprender conexiones java-mysql, fue de gran ayuda
Gracias
Martha Lucia
Hola, tengo una duda, me gustaria usar de ejemplo tu codigo para hacer una consulta a otra base de datos que he creado de una tienda, pero la base de datos tiene varias tablas, entre ellas factura, productos etc, quiero que muestre factura y los datos que necesite de las otras tablas.
A modo de orientacion, que modificaciones mas o menos se le debe hacer al codigo? es que casi no manejo java y estoy confundido. Gracias
MUCHAS GRACIAS POR PUBLICAR ESTE TIPO DE MATERIAL... ESPERO SEGUIR APRENDIENDO Y COMPARTIR LO POCO QUE SE, ASI COMO TU LO HAS ESTADO HACIENDO.
FUNCIONÓ MUY BIEN.
Vale, para unir en un resultado los datos de varias tablas seria modificar las consultas, espero este fin de semana armar un ejemplo para subir al blog
hOLA
TENGO UN PROBLEMA ES QUE AL EJECUTAR ESTE CODIGO EN EL JCREATOR, BUENO AL COMPILARLO DICE QUE NO HAY ERRORES SOLO QUE AL EJECUTARLO DICE QUE ME FALTA EL MAIN TENGO QUE CREARLO O COMO LE HICIERON PARA QUE LES JALARA BIEN
Hola, muy bueno el ejemplo, acabo de correrlo y bien... para el que pregunto sobre el problema del Double y el double yo lo corregi asi:
Double asiNota = new Double(res.getDouble("nota"));
PDT: alejo de casualidad ya publicaste la agenda donde podias hacer los insert y los update ?
Hola amigo tengo un gran problema. Resulta que yo estoy trabajando con un formulario de inicio de sesion hecho en HTML. El usuario se registra a travez de un formulario de registro y despues que el usuario le da a enviar el programa automaticamente le genera su login y su pass!, claro esta el programa lo genera por que lo saca del nombre y del apellido del usuario. El problema viene por que yo quiero tomar esos datos y guardalos en una tabla de mi base de datos. La tabla se llama "USUARIO", ya que el usuario debe de anotar por asi decirlo su login y su pass,este debe de ingresar estos datos, en el formulario de inicio de sesion, este formulario en cuestion debe de verificar si ya esta guardado en la tabla "USUARIO" (aqui debe de realizar un SELECT) y si esta guardado puede entrar a la otra pagina, sino no esta guardada debe de insertarla(INSERT) en la tabla. Todo esto como te dije lo estoy haciendo Usando HTML junto con JAVA SCRIPT y MYSQL. Help Me please.
Alexandra, JavaScript no es suficiente para hacer lo que quieres, tienes que manejar un lenguaje que te permita manejar la conexión con MySQL, como PHP, Java, ASP, etc; cualquiera de estos lenguajes si te permite realizar la conexión con MySQL
Hola Alejo
Una duda, si tuvieras que hacer un metodo refresh al grid de estudiantes como lo harias ?,
Es decir si se agregara un registro a la base de datos como se podria refrescar el listado de estudiantes ?
Gracias
Edge, dale un vistazo al la entrada de Agenda Personal
Estoy utilizando xampp y pienso implementar el código que esta en esta página. Le voy a hacer algunas modificaciones con el fin de poder registrar cualquier estudiante y ver sus notas y materias.
El inconveneinte que tengo es que no logro hacer que me corra el código. Ya lo tengo en eclipse y hago la parte que dice el tutorial sobre el conector (clic derecho sobre el proyecto, propiedades...) pero nada. Porfa alguien que me eche una mani0to.
Mi correo es maguva69@gmail.com GRACIAS
hola.. ante todos saludos.
mi problema no tiene que ver con el ejemplo que dejaste aca.. pero como veo que eres una persona que me puede ayudar. te hago la siguiente pregunta.
en estos momentos estoy haciendo una aplicacion en java con base de datos.. por los momentos todo bien .. pero cuando intento hacer la conexion a la base de datos de esta manera...
String dbRuta="jdbc:mysql://ip de mi compu/hospital_carabobo";
String dbLogin="edgar";
String dbPass="";
Connection conexion = DriverManager.getConnection (
dbRuta,dbLogin, dbPass);
simplemente me lanza un error de que no se pudo realizar la conexion.. asi que me gustaria saber.. ¿si estoy en la misma maquina siempre tengo que poner localhost o es posible poner la ip tambien?
bueno esa es mi duda... me gustaria que respondieras a la brevedad posible.. y me gustaria saber si me puedes dar tu correo para hablarte de cualquier duda.
bueno me despido y espero que puedas solucionar mi duda. gracias.
att. Edgar
Edgar, puedes usar la ip de tu maquina, pero debes tener en cuenta dos cosas, que mysql te acepte conexiones remotas y que el usuario que estés usando tenga permisos para acceder desde direcciones remotas, verifica eso en la configuración de mysql y en los permisos de tu usuario
ya revise mi problema alejo muchas gracias.. era lo de los permisos .. ahora cree un usuario % y funciona bien.
ahora otra pregunta.. como hago para q una persona pueda acceder a una base de datos que yo tenga en mi compu?
att. Edgar
Edgar, no entiendo tu pregunta, que es exactamente lo que quieres hacer, que el usuario se conecte al servidor de bases de datos por un cliente de consola desde otro computador, o que se conecte mediante una interfaz que creaste en java, o con algun programa de tercero?, cuentame un poco más para poder ayudar
que se conecte mediate una interfaz grafica creada por mi, a mi base de datos. por medio de internet.
Hola esta muy padre tu bd Felicidades.
Una pregunta acerca de tu bd:
Como se mostraria en la Tabla estudiantes una foto:
es decir a la hora de mostrar el codigo,el nombre junto mostrara una foto es que a la foto la puse como tipo blob en MySQl pero en java no se como hacerlo.
Me podrias ayudar. Te lo agradeceria mucho
Edgar, modifica el host en los parámetros de conexión, busca localhost y cambialo por la ip de la máquina a la que te vas a conectar
Susana maneja las rutas, para cargar la imagen en un label, por ejemplo
Me podrias dar un ejemplo por favor es que todavia no logro ponerle la foto a la base de datos
Gracias
jeje.. yo tampoco entendi mucho lo uqe dijiste... ya to habia cambiado la ruta de esta manera.. "jdbc:mysql://"+ip+"/nombre de base de datos" y trate de conectarme desde otra compu y no pude hacerlo.
era a eso a lo que te referias?
hey esos pasos fueron de gran ayuda para mi, muchas gracias Alejo, desde hace varios dias tenia problemas con la conexion de eclipse con mySQLAdministrator y ya gracias a Dios y a usted ya no tengo problemas, muchas gracias viejo.
HOLA ALEJO MUCHAS GRACIAS POR COMPARTIR LA INFORMACION CON NOSOTROS LOS NOVATOS EN JAVA Y MYSQL, HASTA AHORITA EH PODIDO CHECAR NUEVAMENTE TU PAGINA Y NO VEO COMENTARIOS DESDE QUE INICIO EL AÑO NUEVO, QUE PASO???.
ALEJO NECESITO TU AYUDA, ESTOY HACIENDO UN SISTEMA PERO NECESITO QUE ME IMPRIMA UNA LISTA PERO NO SE COMO, ME PODRAS AYUDAR, TAMBIEN DONDE PUEDO VER EL BLOG PARA EMPAQUETAR LAS APLICACIONES DE JAVA Y PODER INSTALARLO, ESPERO TU RESPUESTA Y DE ANTEMANO MUCHAS GRACIAS, ME LLAMO MARY
Mary no entiendo tu pregunta, acerca de lo que quieres hacer, si puedes especificar un poco mas podría ayudarte
Hola Alejo buen día... ya apliqué todo para la conexión... pero lo que no puedo hacer el aplicar las siguientes sentencias java.sql.statement, java.sql.resulset. ojalá y tuvieras un prototipo con conexión a mysql donde me pueda basar
anónimo, verifica los import de java.sql.*
Hola Alejo... me parece muy interesante el blog... gracias por toda la informacion.
abusando de tus conocimientos... me podrías decir dónde puedo encontrar algo que me hable de dominios definidos por el usuario y las herramientas de creación, H. administración, H. edicición para esquemas de consulta, H. de control de monitoreo y estadistica de accesos a BD. ya que las que las que bajo de inter no satisfacen a mi maestro... y la verdad no sé que más poner. en verdad te agradeceria mucho tu ayuda.
mi nombre es Jessy.
por favor ayudame!!!
hola alejo:
soy mary, ps estoy haciendo un sistema de control escolar, quiero que mi sistema imprima tan siquiera la lista de alumnos, no se como hacerlo, tambien quiero saber como empaquetar el sistema completo. quiero que me ayudes bueno si puede en las impresiones y para empaquetarlo. muchasgracias
soy mary otra vez si me puedes ayudar con un ejemplo te lo agradeceria mucho...
Mary, puedes ver un ejemplo completo en la entrada de la agenda, para el empaquetado puedes generar un jar y distribuir este, hoy en dia la mayoría de los ides incluyen una opción para generarlo, pero si prefieres puedes hacerlo por comandos:
jar cvf mipaquete.jar
de esa manera empaquetas en un jar tu aplicación
Hola alejo muchas gracias no lo habia checado, ps ya que lo revise ahora lo intentare hacer, gracias suerte en todo.
atte. mary
ah por cierto estan muy buenos los ejemplos
q mas pana. cada ves quiero introducir datos a mysql desde el programa en jama me lanza este error, no se si sean los drivers...
java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'root'@'localhost' (using password: NO)"
tienes configurado el usuario root con password y la conexión la haces sin password
q mas, el root no esta configurado. le coloque el msqladmin y clave mysqladmin y me da este error , una part
java.sql.SQLException: Invalid authorization specification message from server: "Access denied for user 'mysqladmin'@'localhost' (using password: YES)"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2001)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1907)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:2524)
para salir de dudas trata de hacer la conexión por consola de comandos con el siguiente comando
mysql -u mysqladmin -p
mysql te pedirá el password para este usuario, ojo porque este usuario debe tener permisos sobre la base de datos para hacer la operación de inserción. Verifica como ejecutar un grant en mysql
Hola sabes e seguido tus indicaciones y tengo un pequeño problema, resulta que tengo una bd llamada "aizen" y dentro de ella esta una tabla que tiene algunos registros llamada "machine" y siempre que quiero ejecutar me sale una exception
ingresoParts init
GRAVE: null
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'machine' in field list
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2536)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1383)
at conexion.mysql.getLista(mysql.java:56)
at datos.dmachine.getlistname(dmachine.java:23)
at middle.machine.getlistname(machine.java:17)
at ingresoParts.setcbx(ingresoParts.java:209)
at ingresoParts.init(ingresoParts.java:36)
at sun.applet.AppletPanel.run(AppletPanel.java:424)
at java.lang.Thread.run(Thread.java:619)
por mas que reviso no logro dar con la falla si puedes exame una mano por favor mi mail es guille.ahumada@gmail.com
Kotesu: verifica tu sentencia sql por que el error que te da "Unknown table 'machine' in field list" se produce cuando los nombres de las tablas o los campos no corresponden a los nombres en la base de datos
PAna felicitaciones por tu colaboraciones al mundo del software libre. Por casualidad tu tienes conocimientos de como se genera esas tablas pero en PHP. es decir trabajr mi java con MYSQL pero al momento de generar reportes exportar datos a PHP. Gracias mi pana.Saludos!!
Pedro Rojas
D L Mejor grax x la ayuda!!! aprendí mucho!!! salu2
Hola Alejo buen día.... me parece muy interesante la info.... me pregnto si entre tus curiosidades tengas algun ejemplo de Triggers anidados para mysql... y otra pregunta se pueden hacer triggers anidados en DBDesigner... tienes algun ejemplo???... te agradeceria mucho tu ayuda... mi nombre es Jessica
hola amigo, preguntaba si como puedo hacer que estando mi bd en hosting y como puedo conectar con el mismo.. o que me recomienda para hacer un formulario y se conecte tan solo con abrir el formulario...
Hola Alejo!
Soy Irene y estoy incursionando en el mundo de java. Justamente, a raiz de un problemita que me surgió, es que dí con este blog. Desde ya te felicito, porque además de ser muy claro y didáctico, se nota toda la pasión que ponés en él.
Paso a relatarte mi problema para ver si me podés ayudar:
Como te dije estoy estudiando java e hibernate y tengo hechos unos cuantos proyectos a los cuales voy incorporando mis conocimientos. En todos esos proyectos ya tenía incorporado la conexión con Mysql, primero desde java directamente y luego através de hibernate. Andaba todo ok hasta hace 2 días, que sin ningún tipo de cambio de mi parte, me salta error al querer realizar la conexión. Lo mas gracioso es que me puede conectar directamente con Mysql y ver mis tablas, pero a través de mis proyectos no puedo. Y no entiendo porqué! Volví a bajar el connector/j y lo instalé en mis proyectos , pero nada...
Sinceramente no sé qué más hacer, si se te ocurre algo o necesitás más información no dudes en pedírmela.
Desde ya muchas gracias por todo, un saludo,
Irene.
Hola Alejo, soy Irene de nuevo.
Te mando la lista de errores que me tira el proyecto:
Warm SettingsFactory:103 - Could not obtain connection metadata
java.sql.SQLException: Unable to connect to any hostos due to exception: java.net.ConnectException: Connection refused: connect
at
com-mysql.jdbc.Connection.createNewIO(Connection.java:1719)
Gracias!
Irene, disculpa la demora, por lo que comentas parece un cambio en la configuración de MySql y no te esta permitiendo conectarte por fuera de su entorno local, si me puedes dar mas datos de las pruebas que has realizado o de tu configuración, te podría ser de mas ayuda
Hola Alejo! Gracias por contestarme tan rápido!
Te mando un ejemplo sencillo (sin usar hibernate) para comenzar a ver en donde puede estar el problema:
Esta es mi clase para administrar las conexiones:
import java.sql.Connection;
import java.sql.DriverManager;
public abstract class AdministradorDeConexiones {
public AdministradorDeConexiones() {
}
public static Connection getConnection() throws Exception
{
// Establece el nombre del driver a utilizar
String dbDriver = "com.mysql.jdbc.Driver";
// Establece la conexion a utilizar contra la base de datos
String dbConnString = "jdbc:mysql://localhost/j2se";
// Establece el usuario de la base de datos
String dbUser = "root";
// Establece la contraseña de la base de datos
String dbPassword = "1719";
// Establece el driver de conexion
Class.forName(dbDriver).newInstance();
// Retorna la conexion
return DriverManager.getConnection(dbConnString, dbUser, dbPassword);
}
}
Este es el ejercicio que intento ejecutar:
import ar.com.educacionit.lab8.ejercicio1.administrador.AdministradorDeConexiones;
import java.sql.Connection;
import java.sql.Statement;
public class SQLInsertSample {
/** Creates a new instance of SQLInsertSample */
public SQLInsertSample() {
}
public static void main(String[] args) throws Exception
{
// Define la conexion
Connection laConexion = AdministradorDeConexiones.getConnection();
// Arma la sentencia de inserción y la ejecuta
String laInsercion = "INSERT INTO alumnos (alu_id, alu_nombre, alu_apellido) VALUES (101, 'Manuel', 'Santos')";
Statement stmtInsercion = laConexion.createStatement();
stmtInsercion.execute(laInsercion);
// Cierra el Statement y la Connection
stmtInsercion.close();
laConexion.close();
// Informa que la inserción ha sido realizada con éxito
System.out.println("La inserción ha sido realizada con éxito...");
}
}
Mi configuración es:
Windows Vista Basic 6.0
Netbeans 6.5
Java 1.6.0-10
Connector/j connector-java.5.1.7-bin.jar (figura en el classpath)
Mysql Server 5.1
Este es el error que larga:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
at com.mysql.jdbc.ConnectionImpl.init(ConnectionImpl.java:723)
at com.mysql.jdbc.JDBC4Connection.init(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at ar.com.educacionit.lab8.ejercicio1.administrador.AdministradorDeConexiones.getConnection(AdministradorDeConexiones.java:43)
at ar.com.educacionit.lab8.ejercicio1.tutorial.SQLInsertSample.main(SQLInsertSample.java:26)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 1 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.init(MysqlIO.java:335)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
... 13 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.init(Socket.java:366)
at java.net.Socket.init(Socket.java:209)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.init(MysqlIO.java:284)
... 14 more
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
Yo también creo que pasa por algún problema con Mysql. Ayer lo desinstalé y lo volví a bajar y a instalar, pero igual sigo con el problema. Lo mas raro es que no entiendo porqué hace 2 días funcionaba y de golpe dejó de hacerlo...
Mil gracias por tu ayuda!
Un gran saludo,
Irene.
Hola Alejo! Gracias por contestarme tan rápido!
Te voy a enviar toda la información en varios mensajes, porque intenté mandar todo junto y se queda colgado!
Te mando un ejemplo sencillo (sin usar hibernate) para comenzar a ver en donde puede estar el problema:
Esta es mi clase para administrar las conexiones:
import java.sql.Connection;
import java.sql.DriverManager;
public abstract class AdministradorDeConexiones {
public AdministradorDeConexiones() {
}
public static Connection getConnection() throws Exception
{
// Establece el nombre del driver a utilizar
String dbDriver = "com.mysql.jdbc.Driver";
// Establece la conexion a utilizar contra la base de datos
String dbConnString = "jdbc:mysql://localhost/j2se";
// Establece el usuario de la base de datos
String dbUser = "root";
// Establece la contraseña de la base de datos
String dbPassword = "1719";
// Establece el driver de conexion
Class.forName(dbDriver).newInstance();
// Retorna la conexion
return DriverManager.getConnection(dbConnString, dbUser, dbPassword);
}
}
Este es el ejercicio que intento ejecutar:
import ar.com.educacionit.lab8.ejercicio1.administrador.AdministradorDeConexiones;
import java.sql.Connection;
import java.sql.Statement;
public class SQLInsertSample {
/** Creates a new instance of SQLInsertSample */
public SQLInsertSample() {
}
public static void main(String[] args) throws Exception
{
// Define la conexion
Connection laConexion = AdministradorDeConexiones.getConnection();
// Arma la sentencia de inserción y la ejecuta
String laInsercion = "INSERT INTO alumnos (alu_id, alu_nombre, alu_apellido) VALUES (101, 'Manuel', 'Santos')";
Statement stmtInsercion = laConexion.createStatement();
stmtInsercion.execute(laInsercion);
// Cierra el Statement y la Connection
stmtInsercion.close();
laConexion.close();
// Informa que la inserción ha sido realizada con éxito
System.out.println("La inserción ha sido realizada con éxito...");
}
}
Mi configuración es:
Windows Vista Basic 6.0
Netbeans 6.5
Java 1.6.0-10
Connector/j connector-java.5.1.7-bin.jar (figura en el classpath)
Mysql Server 5.1
Sigo ahora con el error que larga:
Este es el error que larga:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 0 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2120)
at com.mysql.jdbc.ConnectionImpl.init(ConnectionImpl.java:723)
at com.mysql.jdbc.JDBC4Connection.init(JDBC4Connection.java:46)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at ar.com.educacionit.lab8.ejercicio1.administrador.AdministradorDeConexiones.getConnection(AdministradorDeConexiones.java:43)
at ar.com.educacionit.lab8.ejercicio1.tutorial.SQLInsertSample.main(SQLInsertSample.java:26)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Last packet sent to the server was 1 ms ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.init(MysqlIO.java:335)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2043)
... 13 more
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.init(Socket.java:366)
at java.net.Socket.init(Socket.java:209)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
at com.mysql.jdbc.MysqlIO.init(MysqlIO.java:284)
... 14 more
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
Yo también creo que pasa por algún problema con Mysql. Ayer lo desinstalé y lo volví a bajar y a instalar, pero igual sigo con el problema. Lo mas raro es que no entiendo porqué hace 2 días funcionaba y de golpe dejó de hacerlo...
Mil gracias por tu ayuda!
Un gran saludo,
Irene.
Hola Alejo y a todos los bloggers!
Entré en el blog de Mysql y ví que había un montón de personas que tenían el mismo problema. Uno de ellos informó que reemplazó localhost por 127.0.0.1.
Así que me fuí a mi clase de AdministradorDeConexiones.java y en la línea donde dice :
String dbConnString = "jdbc:mysql://localhost/j2se";
lo reemplacé por:
String dbConnString = "jdbc:mysql://127.0.0.1/j2se";
y funcionó!
No tengo la menor idea del motivo!
A lo mejor, vos Alejo podrás entender el porqué y explicárnoslo.
Gracias por todo y seguiré atentamente este blog.
Saludos, Irene
Irene este problema tiene que ver con la configuración no de mysql sino por lo general del sistema operativo sobre el cual estas corriendo las pruebas, alguna ves renombre el identificador en la red de mi maquina haciendo pruebas de herramientas para evaluación en linea de ejercicios de programación y luego nada que apuntara a localhost funcionaba, muchas gracias por publicar la solución
Muchas Gracias, tu programa es muy útil y nos ha ayudado a muchas personas.
Una vez mas, muchísimas gracias por tu generosidad para compartir tu conocimiento.
Hola alejo.. me gustaria comunicarme contigo.. por msn si tienes.. tengo un problema con un proyecto q me mandaron y no puedo realizar la conexion con la BD... mi correo es eduar_16_2003@hotmail.com te lo agradeceria mucho!
disculpen es q tengo un problema con este codigo tu me podrias ayudar, me aparece erros de missing return stetament
se le agradece sus ayudas de antemano
package empresa;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;
/**
*
* @author Crash
*/
public class Ventana extends javax.swing.JFrame {
Connection conexion;
Statement sentencia;
ResultSet resultado;
public Ventana() {
initComponents();
PrepararBaseDatos();
this.setTitle("Base de Datos System Cursos");
this.setSize(600,800);
this.setResizable(false);
}
Void PrepararBaseDatos(){
try {
String controlador = "Sun.odbc.Jdbc0dbcDriver";
Class.forName(controlador).newInstance();
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"error al cargar el controlador");
}
try {
String DSN = "jdbc:Driver={Microsoft Acces Driver(*.mdb)};DBQ="+"Base\\bdSystem.MDB";
String password ="";
String user ="";
conexion = DriverManager.getConnection(DSN,user,password);
}
catch(Exception e){
JOptionPane.showMessageDialog(null,"error al realizar conexion");
}
try {
sentencia = conexion.createStatement(
resultado.TYPE_SCROLL_INSENSITIVE,
resultado.CONCUR_READ_ONLY);
}catch(Exception e){
JOptionPane.showMessageDialog(null,"Error al crear el objeto sentencia");
}
}
se me olvidaba mi correo es jhan_6969@hotmail.com
Publicar un comentario en la entrada