¿Cómo se conecta a una base de datos MySQL en Java?
Cuando lo intento, me sale
java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
O
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
O
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Respuestas:
DriverManager
Es una forma bastante antigua de hacer las cosas. La mejor manera es obtener unaDataSource
, ya sea buscando una que el contenedor del servidor de aplicaciones ya haya configurado para usted:o crear instancias y configurar una desde el controlador de la base de datos directamente:
y luego obtener conexiones de él, igual que arriba:
fuente
com.mysql.jdbc.Driver
? ¿Es este método mejor?MysqlDataSource
implementajavax.sql.DataSource
cuál es el mecanismo más nuevo.rs
ystmt
? ¿Por qué no soloconn
?Aquí hay una explicación paso a paso sobre cómo instalar MySQL y JDBC y cómo usarlo:
Descargue e instale el servidor MySQL . Solo hazlo de la manera habitual. Recuerde el número de puerto siempre que lo haya cambiado. Es por defecto
3306
.Descargue el controlador JDBC y póngalo en classpath , extraiga el archivo ZIP y coloque el archivo JAR que contiene en el classpath. El controlador JDBC específico del proveedor es una implementación concreta de la API JDBC ( tutorial aquí ).
Si está utilizando un IDE como Eclipse o Netbeans, puede agregarlo a la ruta de clase agregando el archivo JAR como Biblioteca a la Ruta de compilación en las propiedades del proyecto.
Si lo está haciendo "vainilla simple" en la consola de comandos, entonces debe especificar la ruta al archivo JAR en el argumento
-cp
o-classpath
cuando ejecute su aplicación Java.El
.
solo está allí para agregar el directorio actual al classpath también para que pueda ubicarlocom.example.YourClass
y;
es el separador del classpath como está en Windows. En Unix y clones se:
deben utilizar.Crea una base de datos en MySQL . Vamos a crear una base de datos
javabase
. Por supuesto, quieres World Domination, así que usemos UTF-8 también.Cree un usuario para Java y concédale acceso . Simplemente porque usar
root
es una mala práctica.Sí,
java
es el nombre de usuario ypassword
la contraseña aquí.Determine la URL de JDBC . Para conectar la base de datos MySQL utilizando Java, necesita una URL JDBC en la siguiente sintaxis:
hostname
: El nombre de host donde está instalado el servidor MySQL. Si está instalado en la misma máquina donde ejecuta el código Java, puede usarlolocalhost
. También puede ser una dirección IP como127.0.0.1
. Si encuentra problemas de conectividad y usa en127.0.0.1
lugar delocalhost
resolverlo, entonces tiene un problema en su configuración de red / DNS / hosts.port
: El puerto TCP / IP donde escucha el servidor MySQL. Esto es por defecto3306
.databasename
: El nombre de la base de datos a la que desea conectarse. Eso esjavabase
.Entonces la URL final debería verse así:
Probar la conexión a MySQL usando Java . Cree una clase Java simple con un
main()
método para probar la conexión.Si obtiene un
SQLException: No suitable driver
, significa que el controlador JDBC no se cargó automáticamente o que la URL JDBC es incorrecta (es decir, ninguno de los controladores cargados lo reconoció). Normalmente, un controlador JDBC 4.0 debe cargarse automáticamente cuando lo suelta en classpath en tiempo de ejecución. Para excluir uno y otro, siempre puede cargarlo manualmente de la siguiente manera:Tenga en cuenta que la
newInstance()
llamada no es necesaria aquí. Es solo para arreglar lo viejo y con erroresorg.gjt.mm.mysql.Driver
. Explicación aquí . Si se lanza esta líneaClassNotFoundException
, entonces el archivo JAR que contiene la clase de controlador JDBC simplemente no se ha colocado en el classpath.Tenga en cuenta que no necesita cargar el controlador cada vez antes de conectarse. Solo una vez durante el inicio de la aplicación es suficiente.
Si obtiene un
SQLException: Connection refused
oConnection timed out
un MySQL específicoCommunicationsException: Communications link failure
, significa que no se puede acceder al DB en absoluto. Esto puede tener una o más de las siguientes causas:Para resolver uno u otro, siga los siguientes consejos:
ping
.my.cnf
MySQL DB.--skip-networking option
.finally
.Tenga en cuenta que cerrar el
Connection
es extremadamente importante. Si no cierra las conexiones y sigue obteniendo muchas en poco tiempo, la base de datos puede quedarse sin conexiones y su aplicación puede fallar. Siempre adquiere elConnection
en unatry-with-resources
declaración . O si aún no está en Java 7, ciérrelo explícitamente enfinally
untry-finally
bloque. Cerrarfinally
es solo para asegurarse de que también se cierre en caso de una excepción. Esto también se aplica aStatement
,PreparedStatement
yResultSet
.Eso fue todo lo que concierne a la conectividad. Puede encontrar aquí un tutorial más avanzado sobre cómo cargar y almacenar objetos de modelo Java en una base de datos con la ayuda de una clase DAO básica.
Usar un patrón Singleton para la conexión DB es un mal enfoque. Consulte entre otras preguntas: http://stackoverflow.com/q/9428573/ . Este es un error de arranque # 1.
fuente
Inicializar constantes de base de datos
Cree propiedades constantes de nombre de usuario, contraseña, URL y controladores, límite de sondeo, etc.
Inicializar conexión y propiedades
Una vez que se establece la conexión, es mejor almacenar para fines de reutilización.
Crear propiedades
El objeto de propiedades contiene la información de conexión, verifique si ya está configurado.
Conecta la base de datos
Ahora conéctese a la base de datos usando las constantes y propiedades inicializadas.
Desconectar la base de datos.
Una vez que haya terminado con las operaciones de la base de datos, simplemente cierre la conexión.
Todo junto
Use esta clase
MysqlConnect
directamente después de cambiar nombre_base_datos, nombre de usuario y contraseña, etc.¿Cómo utilizar?
Inicialice la clase de base de datos.
En otro lugar de tu código ...
Esto es todo :) ¡ Si hay algo para mejorar, edítalo! Espero que esto sea útil.
fuente
com.mysql.jdbc.Driver
estojdbc:mysql://localhost:3306/stocks
debe usarse ya que el primero está en desuso.fuente
Aquí está lo mínimo que necesita para obtener datos de una base de datos MySQL:
Agregue manejo de excepciones, configuración, etc. al gusto.
fuente
Class.forName(...).newInstance()
?Conexión MySQL JDBC con useSSL.
fuente
necesita tener el conector del conector mysql en su classpath.
en Java JDBC API hace todo con bases de datos. usando JDBC podemos escribir aplicaciones Java para
1. Enviar consultas o actualizar SQL a DB (cualquier base de datos relacional) 2. Recuperar y procesar los resultados de DB
con los siguientes tres pasos podemos recuperar datos de cualquier base de datos
fuente
Código corto y dulce.
Para SQL Server 2012
fuente
Connection
Estaba usando hace algún tiempo, parecía la forma más fácil, pero también había recomendaciones para hacer unaif
declaración, exactamenteO algo así de esa manera :)
Probablemente hay algún caso, mientras que
getConnection
puede volvernull
:)fuente
Puede ver todos los pasos para conectar la base de datos MySQL desde la aplicación Java aquí . Para otra base de datos, solo necesita cambiar el controlador solo en el primer paso. Asegúrese de proporcionar la ruta correcta a la base de datos y el nombre de usuario y contraseña correctos.
Visite http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA
fuente
Método 1: establezca la variable CLASSPATH.
En el comando anterior, configuré CLASSPATH en la carpeta actual y el archivo mysql-connector-java-VERSION.jar. Entonces, cuando se
java MyClassFile
ejecuta el comando, el iniciador de aplicaciones Java intentará cargar toda la clase Java en CLASSPATH. Y descubrió que laDrive
clase => errores de BOOM había desaparecido.Método 2:
Nota: Class.forName ("com.mysql.jdbc.Driver"); Esto está en desuso en este momento 2019 Abr.
¡Espero que esto pueda ayudar a alguién!
fuente
Conexión MySql JDBC:
fuente
Descargar JDBC Driver
Enlace de descarga (Seleccione plataforma independiente): https://dev.mysql.com/downloads/connector/j/
Mueva el controlador JDBC a la unidad C
Descomprima los archivos y muévase a C: \ drive. Su ruta del conductor debe ser como
C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19
Ejecute su Java
testMySQL.java
fuente
Código corto
fuente