A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Conexi贸n a MySQL desde Java

8/25
Recursos

Aportes 69

Preguntas 21

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

En IntelliJ IDEA鈥 en File -> Project Structure -> Dependecies, hacen click al (+), y luego seleccionan la opcion 2 (descargar del repositorio de Maven). Alli buscan poniendo 鈥榤ysql鈥 y les arroja las opciones.

Si a alguien le aparece el siguiente error al correr la aplicaci贸n:
java.sql.SQLException: The server time zone value 鈥榰nknown鈥 is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

Ejecutar este comando en una ventana sql del php my admin:
SET GLOBAL time_zone = 鈥-5:00鈥;
(colocar su zona horaria)

Para quienes tengan problemas con la librer铆a de conexi贸n a la base de datos.

  1. Descargar el paquete mysql-connector-java (es un .jar)
  2. En el directorio del proyecto, click derecho en <Dependencies> - Select Add dependency.
  3. Tipear en el groupId to: group.id y en artifactId to: artifact.id (o cualquier cosa en ambos casos)
  4. En version, el n煤mero de la versi贸n del .jar descargado
  5. Click Add to continue.
    La dependencia ser谩 agregada en el pom.xml
    Luego,
  6. En el directorio <Dependencie> del proyecto, aparecer谩 el archivo con las especificaciones ya dadas, click derecho en dicho archivo - Manually install artifact
  7. Buscar en el .jar descargado y clickear en 鈥淚nstall locally鈥.

Es una traducci贸n muy coloquial de algo que vi en la red y me solucion贸 el problema!!!

Hola Compa帽eros鈥 traigo un aporte sobre los problemas con las librer铆as en IntelliJ IDEA.
Si te aparece este ERROR:: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/db.
la soluci贸n es agregar el archivo mysql-connector-java-8.0.20 a tu proyecto si tienes instalados los conectores de MYSQL, esta librer铆a se encuentra en la ruta C:\Program Files (x86)\MySQL\Connector J 8.0\mysql-connector-java-8.0.20, para agregarla en IntelliJ IDEA tiene que ir a : File/Project Structure/Libraries/ y agregar una nueva librer铆a, y listo ya puedes compilar tu programa sin ese error.

Para instalar el Conector de MySQL debes ir a su Pagina Oficial y descargar el archivo MSI de instalaci贸n : https://dev.mysql.com/downloads/mysql/, descarga el instalador web(el que pesa menos ya que no vas a requerir descargar todo el RDBMS) luego al abrir el instalador debes seleccionar la opci贸n 鈥榗ustom鈥 y luego de eso buscas la opci贸n MySQL Connectors e instalas en conector de Java. Listo as铆 se instala el conector en Windows. Saludos.

驴D贸nde queda las buenas pr谩cticas de Naming de m茅todos y variables en este curso?

En mi parecer inserta c贸digo y deber铆a dar como una explicaci贸n por que lo crea

Excelente, para los que les salga el error de TimeZone deben de ejecutar en la BD el comando:
`
SET GLOBAL time_zone = 鈥-5:00鈥;

`
gracias @Josh9638

Muy bien, siguiendo los pasos se puede lograr la conexi贸n.

El 煤nico problema que se me presento fue al realizar la b煤squeda de la dependencia y no aparec铆a (Despu茅s de esperar los 5 a 10 minutos a que se descargara el repositorio Maven), pude encontrarla con solo agregar en la b煤squeda la palabra 鈥渕ysql鈥, ya que a帽adiendo m谩s caracteres se organiza de tal forma que no aparece.

Muchas gracias por la clase y me funciona correctamente con mysql-connector-java-5.1.18.

JDBC

Java Data Base Connectivity

Clases

  • DriverManager: es para cargar un driver (seg煤n el motor de BD). Nos permite crear una instancia de la conexi贸n.

  • Connection: para establecer conexiones con las bases de datos**.** Genera la sesi贸n, maneja todo el ciclo de vida de una sesi贸n cuando nos conectamos a una base de datos.

  • Statement: para ejecutar sentencias SQL y enviarlas a las BD. Nos ayuda a traer datos de una tabla.

  • PreparedStatement: hace lo mismo que Statement s贸lo que permite recibir par谩metros (clausula where).

  • ResultSet: para almacenar el resultado de la consulta y almacenarlos en nuestros objetos (modelos). Es una interfaz que nos ayudar谩 a manejar los datos obtenidos convirtiendo los datos en objetos.

INTELLIJ IDEA

  1. Index.java

import java.sql.Connection;

public class Index {
public static void main(String[] args) {
Conexion conexion = new Conexion();
try(Connection cnx = conexion.get_connection()){

    }catch (Exception e) {
        System.out.println(e);
    }
}

}

  1. Conexion.java
    import java.sql.SQLException;

public class Conexion {
public Connection get_connection() {
Connection conection = null;
try {
conection = DriverManager.getConnection(鈥渏dbc:mysql://localhost:3306/mensaje_app?serverTimezone=UTC鈥, 鈥渞oot鈥, 鈥溾);
if (conection != null) {
System.out.println(鈥淐onexion Ready鈥);
}
}catch(SQLException e){
System.out.println("Error en conexi贸n!! " + e);
}
return conection;
}
}

Si utilizan VSCode, no olviden descargar el JDBC driver for MySQL, y luego en el archivo POM.xml, agregar las dependencias.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>

En el siguiente link podr谩n encontrar una gu铆a paso por paso:
https://www.codejava.net/java-se/jdbc/connect-to-mysql-database-via-jdbc

Una duda, por qu茅 hace 2 veces lo mismo? En la funcion de la clase conexion ya est谩 el codigo que luego vuelve a escribir en el main.
Ejecut茅 el codigo sin duplicar y me sale el mismo resultado:
main(){
Conexion conexion = new Conexion();
conexion.get_connection();
}

Si les aparece una excepci贸n del tipo:

java.sql.SQLException: The server time zone value 'value' is unrecognized or represents more than one time zone.

A帽adan este par谩metro a la url de conexi贸n
?serverTimezone=UTC

jdbc:mysql://localhost:3306/java_mensajes?serverTimezone=UTC

Para aquellos que les salga un problema al ejecutar el programa tipo este鈥
Cannot run program 鈥渃md鈥 (in directory 鈥淐:\Users\MyUsername\Documents\NetBeansProjects\asdf鈥): Malformed argument has embedded quote: 鈥淐:\netbeans-9\java\maven\bin\mvn.cmd鈥 -Dexec.args="-classpath %classpath com.mycompany.asdf.Test" -Dexec.executable=C:\Java\jdk1.8.0_231\bin\java.exe -Dmaven.ext.class.path=C:\netbeans-9\java\maven-nblib\netbeans-eventspy.jar -Dfile.encoding=UTF-8 process-classes org.codehaus.mojo:exec-maven-plugin:1.5.0:exec
Pueden visitar esta pagina que les soluciona el error, lo estaba buscando por horas y fue el unico que pudo solucionarlo鈥
https://stackoverflow.com/questions/58445540/netbeans-9-10-11-cannot-run-program-cmd

Yo simplemente en el main, cree la instancia de esta manera:

Conexion c = new Conexion();
try {
c.get_connection();
}catch (Exception e){
System.out.println(e);
}

Conexi贸n exitosa.

Me sale esto 馃槮


BUILD FAILURE

Total time: 1.324s
Finished at: Sat Jul 11 16:12:56 GMT-05:00 2020
Final Memory: 6M/123M

Plugin org.codehaus.mojo:exec-maven-plugin:1.2.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.codehaus.mojo:exec-maven-plugin:jar:1.2.1: Could not transfer artifact org.codehaus.mojo:exec-maven-plugin:pom:1.2.1 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/codehaus/mojo/exec-maven-plugin/1.2.1/exec-maven-plugin-1.2.1.pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

Si tiene problemas con la conexi贸n verifiquen la ruta
" jdbc:mysql://localhost:3306/mensajes_app "
Y si te sale error de TimeZone ( " java.sql.SQLException: The server time zone value 鈥榰nknown鈥. . . ",) Deben de ejecutar en la BD el comando:
SET GLOBAL time_zone = 鈥-5:00鈥;
y listo!. Fue una recopilaci贸n de lo leido por otros compa帽eros, a mi me sirvi贸.

Tardan en cargar las dependecias pero mientras aparezca la barra de estado en el lado inferior derecho de la pantalla, todo esta corriendo bien!!

El error 鈥淭he server time zone value 鈥榰nknown鈥 is unrecognized or represents more than one time zone鈥 se soluciona ejecutando en BD (puede ser a trav茅s de phpMyAdmin) la sentencia:

SET GLOBAL time_zone = 鈥-5:00鈥;

(en mi caso es GMT -5, Colombia)

Aqu铆 una lista de las zonas horarias que se pueden configurar con el comando SET GLOBAL time_zone=鈥-5:00鈥 en la consola de MySQL para que tu conexi贸n se establezca. link

Yeah !!!

conexion exitosa

Process finished with exit code 0

Si les aparece el error ClassNotFoundException al correr el proyecto deben modificar en la carpeta Project Files -> pom.xml la siguiente propiedad :

<exec.mainClass>com.platzi.mensajes_app.Inicio</exec.mainClass>

Si escribes 鈥渟out鈥 y presionas CTRL+Barra espaciadora, NetBeans te da la sugerencia de autocompletarte el System.out.printtn鈥

1
para aquellos que quieren aprender a profundidad el JDBC (JAVA DATABASE CONNECTIVITY) sin ser 鈥渞obotizado鈥 les dejo este link que les puede ser 煤til
馃憣馃馃馃
https://www.infoworld.com/article/3388036/what-is-jdbc-introduction-to-java-database-connectivity.html

Responder

Otra forma de corregir lo de la zona horaria:

String url = "jdbc:mysql://localhost:3306/mensajes_app?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=" + TimeZone.getDefault().getID();

Conexion.java

package org.example.mensajes;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {

    public Connection get_connection() {
        Connection connection = null;
        final String DATABASE = "mensajes_app";
        final String URL = "jdbc:mysql://localhost:3306/" + DATABASE;
        final String USER = "root";
        final String PASSWORD = "";
        try {
            connection = DriverManager.getConnection(
                    URL,
                    USER,
                    PASSWORD
            );
            if (connection != null) System.out.println("Conexion exitosa");
        } catch(SQLException e) {
            System.out.println(e);
        }
        return connection;
    }

}

Inicio.java

package org.example.mensajes;

import java.sql.Connection;

public class Inicio {
    public static void main(String[] args) {
        Conexion conexion = new Conexion();

        try (Connection conn = conexion.get_connection()) {

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

  • Para Instalar Librer铆as en IntelliJ solo se van a:
    File | Project Structure, click en Modules | Dependencies
  • Despu茅s:
    click en + | Library | From Maven
  • Y escribimos mysql, y buscar 馃攳
  • Seleccionamos mysql:mysql-connector-java:ULTIMAVERSION

La cadena de conexi贸n para sql server
jdbc:sqlserver://<server>:<port>;databaseName=AdventureWorks;user=<user>;password=<password>

Deberias especificar que ocupas la version 12 de Java.

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar

Hola a todos, estoy trabajando con IntelliJ y realizo todos los pasos, importo las dependencias de la libreria de MySQL connector, sin embargo a la hora de correr el programa no aparece nada, sencillamente se queda cargando y ya! ningun error, prob茅 cambiando el puerto intencionalmente y ah铆 si me sale error.

Alguien sabe por qu茅 puede estar sucediendo esto? alguien m谩s est谩 trabajando con IntelliJ?

ufffff este me costo pero lo logre, gracis profe

Hola, Quicen me puede ayudar me sale el siguiente error:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mensajes_app

驴donde puedo ver la url?
gracias al que me pueda ayudar.

Tuve problemas al conectar la base de datos. Me devolv铆a el siguiente erro: " the server time zone value"

Lo que realize fue lo siguiente:
Fui a PhpMyAdmin, localize la base de datos que estamos trabajando 鈥淢ensaje_app鈥 y en generar una consulta ejecute el siguiente comando "SET GLOBAL time_zone = 鈥-6:00鈥 (-6:00 es hora de Guatemala)

Saludos Colegas!

Uso Netbeans 8 y tengo instalado MySQL workbench, cuando intento buscar las dependencias no me aparecen, alguien sabe por que? help pls

La cadena de conexi贸n para postgresql:

"jdbc:postgresql://localhost/mensajes?user=postgres&password=passw";

Los anteriores aportes est谩n muy bien gracias a todos; y por favor sean mas espec铆ficos: Por ejemplo falto decir que NO LLEVA PUNTO Y COMA al final del query. De resto muchas gracias por su ayuda, y procuremos no ser tan obvios.

Connection Ok 馃槂

a mi parecer, fue corriendo esto鈥i alguien no tiene instalado maven? si no esta configurado el m2?

Algunos problemas, pero todo funcionando ok.

Ayuda: No me aparece nada cuando busco mysql_connector_java

Si no les funciona SET GLOBAL time_zone = 鈥-5:00鈥; prueben con comillas dobles SET GLOBAL time_zone = 鈥-5:00鈥;

Para linux OS

Cuando se define la conexion a la BD, ya en un entorno productivo. Como seria el uso de las credenciales? o queda ahi hardcodeado en el codigo el usuario y el pass?

Todo genial!

Recuerden que Oracle ahora cobra por las licencias de uso de java plug-in

Estaria bien si solo hago el algoritmo de conexion dentro del contructor de la clase Conexion()? de esta manera鈥

public class Conexion {

public Conexion() {
    Connection con;
    try {
        con = DriverManager.getConnection("jdbc:mysql://localhost/mensajes_app", "root", "");
        System.out.println("Conexion Lista");
    } catch (Exception e) {
        System.out.println("Revisa esa madre!! "+e);
    };
}

}
As铆 con solo crear un objeto dentro de algun m茅todo, ya estar铆a conectado

olvidenlo, ya pude resolver mis problemas jejeje

Solucion al error de timezone, probado desde Intellij IDEA:

"jdbc:mysql://localhost:3306/test?serverTimezone=UTC"

Solo sustituye el String de url que tienes por este.

no me sale en las opciones de b煤squeda 馃槮

Listo lograda la conexion, tambien tuve el problema de la zona horaria pero gracias al chat logre solucionar, ahora se pone interesante el asunto.

est谩 dificil el teclado no se deja domar (?

Excelente clase!!

Otra forma de hacer la conexi贸n a bases de datos ser铆a:

package com.platzi.mensajes_app;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class PruebaConexion {

    Connection cn;
    Statement st;
    ResultSet rs;
    

    public Connection conexion() {

        try {
            // Creamos el DriverManager 
            Class.forName("com.mysql.jdbc.Driver");

            String url = "jdbc:mysql://localhost/mensajes_app" + "?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC";
            cn = DriverManager.getConnection(url, "root", "");

        } catch (Exception e) {
            System.out.println("Error al conectar");
        }

        return cn;

    }

}

Buenas,

Tengo un problema, xampp esta UP, pero me sigue saliendo este error:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

BUILD SUCCESS

Total time: 2.023 s
Finished at: 2020-07-11T13:34:57-05:00

He reiniciado XAMPP y levantado los servicios, sin embargo, sigo sin poder conectarme a la bd, 驴alguien le ha sucedido algo parecido? he googleado, probando opciones como: en vez de localhost poner 127.0.0.1, entre otros y sigue saliendo lo mismo.

Muchas gracias!

Alguien me puede ayudar con este error?
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mensajes_app

con anterioridad no explicaron el tema del try - catch por lo cual no me es natural su uso ac谩鈥

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexion {
    public Connection get_connection(){
        Connection conection = null;
        try{
            conection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mensajes.app","root","Erika1949d");
            if(conection != null){
                System.out.println("Conexion exitosa");
            }
        }catch(SQLException e){
            System.out.println(e);
        }
    return conection;
    }    
}
conexion conexion = new Conexion();
try(Connection cnx = conexion.get_connection()){
      
}catch(Exception e){
      System.out.println(e);
}

Por si les interesa, yo utilic茅 la imagen de MariaDB para iniciar un contenedor con Docker:

docker container run -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 --name platzimessages -d mariadb:10.4

Y luego con MYSQL Workbench me conect茅 al servidor para crear la base de datos y la tabla de mensajes.

Enlace a tutorial de instalaci贸n NetBeans 12.1/Configuraci贸n Driver Mysql

https://platzi.com/tutoriales/1760-java-persistencia/7532-guia-para-la-instalacion-y-configuracion-de-netbeans121/

Como agrego dependencias en intellijIDE??

Si tienen pensado trabajar con postrgres y desean conectarse a un esquema especifico pueden hacerlo de la siguiente manera:

  connection=      DriverManager.getConnection(
                       "jdbc:postgresql://localhost:5432/postgres?currentSchema=NOMBRE DE TU ESQUEMA",
                       "postgres", "123456");

realmente una forma bastante sencilla, practica y muy funcional de ense帽ar lo b谩sico y necesario para conectar a una base de datos

Instalar dependencias en IntelliJ IDEA.

  1. Abrir el archivo pom.xml en el editor
  2. Presionar Alt + Insert
  3. Buscar la dependencia a agregar
  4. Elegir la dependencia y la versi贸n que se desea agregar, y dar click en Ok

Algunos inconvenientes pero logrado. 鈥淐onexi贸n exitosa鈥

Para los que tenga problemas con agregar el Java Connector, lo pueden instalar desde C:\Program Files (x86)\MySQL\MySQL Installer for Windows y ejecutan el MySQLInstaller, ah铆 pueden instalar conectores para otros lenguajes y para java obviamente

Por si utilizan VSCode pueden descargar una extensi贸n del Marketplace que se llama MySQL.
![](

tengo problemas con el timezone mysql workbench como cambio la hora