Java - Ayuda con curso (conexión con MySQL)

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Julio (11 intervenciones) el 01/07/2019 01:43:49
Hola, estoy haciendo un curso de video en youtube y tengo un problema que no logro resolver.
El ejercicio consta en crear una ventana que permita crear, modifica y buscar usuarios en una base dato.

Seguí todos los pasos y ya revise 3 veces pero no logro entender que estoy haciendo mal, no se conecta con mi base de datos al parecer
importe java.sql, en la carpeta librería agregue los driver que recomienda el curso mysql-conector-java-5.1.46.jar

revise bien poner de forma exacta el nombre de la base de dato y la tabla
corro apache con xampp e instale mysql 5.5 por fuera de xampp, cree la tabla a través de phpmyadmin de apache

Si alguien podría orientarme para detectar el error o por lo menos confirmar si es que no se conecta a la base como pienso o puede ser otra cosa

Lo mando por foto y escrito

Sin-titulo

la clase y el codigo del Button

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package ventanas;
 
import java.sql.*;
import javax.swing.JOptionPane;
 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    //Siempre que sea coneccion a base de datos el codigo tiene que estar dentro de un try catch
    try {
        //creo un objeto "cn" de la clase Connection y sigo con el metodo para conectar a la base de datos
        //Primer comilla es para ubicarla jdbc:mysql://localhost/ mas el nombre de la base de datos, segunda usuario y tercerda passwd
        Connection cn = DriverManager.getConnection("jdbc:mysql://localhost/bd_ins", "root", "");
        /*creo un objeto "pst" de la clase PreparedStatement, pongo = a objeto "cn" y sigo con el metodo
         *primer comilla es la instruccion a la base de datos, "alumnas es el nombre de la tabla"
         *entre parentesis ? igual a la cantidad de datos que necesita la tabla, es este caso ID,nommbrealumno y grupo.
         */
        PreparedStatement pst = cn.prepareStatement("insert into alumnos values (?,?,?)");
        //EL objeto pst deposita los datos en la tabla, el primer espacio es para el numero de la columna, el segundo es para el dato
        //al ser una id que puse autoincrimentable lleva "0"
        pst.setString(1, "");
        //variable del texfield + getText + trim() esto hace que no se guarden espacios antes o despues del texto()
        pst.setString(2, txt_nombre.getText().trim());
        pst.setString(3, txt_grupo.getText().trim());
        //con este metdo indico que se ejecunte las lineas anteriores y se guarden los datos
        pst.executeUpdate();
        //vacio los texfield
        txt_nombre.setText("");
        txt_grupo.setText("");
        //pongo la leyenda el el jlabel
        label_status.setText("Registro exitoso.");
    } catch (Exception e) {
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Joan
Val: 35
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Joan (11 intervenciones) el 01/07/2019 13:14:50
Hola Julio, que error te da la conexión?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Julio (11 intervenciones) el 01/07/2019 23:58:54
Logre resolverlo, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 4 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por ismael (4 intervenciones) el 01/07/2019 16:29:10
si nos dices el error que te da en el catch quizas te podamos ayudar, ayer estuve yo liado con algo parecido y conseguí conectarme a un MAMP (igual que Xammp pero para mac) a ver si te podemos ayudar.

Bueno para empezar lo que veo eso si es que te falta el puerto creo es decir: "jdbc:mysql://localhost:PUERTOt/bd_ins", "root", ""
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Julio (11 intervenciones) el 01/07/2019 23:59:12
Logre resolverlo, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Billy Joel (876 intervenciones) el 01/07/2019 17:27:48
Lo único que no veo es el Class.forName...
Agrega lo siguiente en el constructor de la clase:
1
2
3
4
5
try {
    Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
    ex.printStackTrace(System.out);
}

Entonces tu método lo dejaría así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Connection cn;
try {
    //creo un objeto "cn" de la clase Connection y sigo con el metodo para conectar a la base de datos
    //Primer comilla es para ubicarla jdbc:mysql://localhost/ mas el nombre de la base de datos, segunda usuario y tercerda passwd
    cn = DriverManager.getConnection("jdbc:mysql://localhost/bd_ins", "root", "");
    /*creo un objeto "pst" de la clase PreparedStatement, pongo = a objeto "cn" y sigo con el metodo
 *primer comilla es la instruccion a la base de datos, "alumnas es el nombre de la tabla"
 *entre parentesis ? igual a la cantidad de datos que necesita la tabla, es este caso ID,nommbrealumno y grupo.
     */
    PreparedStatement pst = cn.prepareStatement("insert into alumnos values (?,?,?)");
    //EL objeto pst deposita los datos en la tabla, el primer espacio es para el numero de la columna, el segundo es para el dato
    //al ser una id que puse autoincrimentable lleva "0"
    pst.setString(1, "");
    //variable del texfield + getText + trim() esto hace que no se guarden espacios antes o despues del texto()
    pst.setString(2, txt_nombre.getText().trim());
    pst.setString(3, txt_grupo.getText().trim());
    //con este metdo indico que se ejecunte las lineas anteriores y se guarden los datos
    pst.executeUpdate();
    //vacio los texfield
    txt_nombre.setText("");
    txt_grupo.setText("");
    //pongo la leyenda el el jlabel
    label_status.setText("Registro exitoso.");
} catch (SQLException e) {
    e.printStackTrace(System.out);
} finally {
    //Aquí vamos a cerrar la conexión a la base de datos
    try {
        if (cn != null && !cn.isClosed()) {
            cn.close();
        }
    } catch (SQLException ex) {
        ex.printStackTrace(System.out);
    }
}

Espero que con estos cambios se resuelva el problema, si sigue dando problemas solo avisa y lo vemos. Y si no también avisa...

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 21
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Ayuda con curso (conexión con MySQL)

Publicado por Julio (11 intervenciones) el 01/07/2019 23:57:56
Vamos por parte el catch me devolvía este error

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)

Fui a la base de datos y puse sin contraseña , la cual para mi la había creado sin contraseña, pero ahora dedusco que la clave que pide es con la que instale mysql, ya al sacar la clave de mysql ahora se conecta y al guardar ya no tira ese error.

ahora me tira el siguiente

java.sql.SQLException: Incorrect integer value: '' for column 'ID' at row 1

el cual pude solucionar cambiando lo siguiente
pst.setString(1, "0");

agregando el 0 entre las comillas, en el curso decía que era indiferente dejar vació o poner 0 cuando es una campo con auto incrementar, pero sin el 0 no me funcionaba

Ahora todavía no se usar el finally para cerrar la conexión pero si lo agrega tan cual lo pones me tira error en "cn", como que no reconoce el objeto.

Gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar