¿Qué es la cadena de conexión del controlador MySQL JDBC?

117

Soy nuevo en JDBC y estoy intentando hacer una conexión a una base de datos MySQL. Estoy usando el controlador Connector / J, pero no puedo encontrar la cadena de conexión JDBC para mi Class.forName()método.

BalusC
fuente
4
Para empezar, Class.forName()no espera una cadena de conexión JDBC, sino el nombre de la clase del controlador JDBC.
BalusC

Respuestas:

114

Suponiendo que su conductor está en el camino,

String url = "jdbc:mysql://localhost/test";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = DriverManager.getConnection (url, "username", "password");
Langali
fuente
1
¿Cómo encuentras la ruta jdbc si no está en las variables de entorno?
Roy Hinkley
1
En el código de muestra, la URL de JDBC ha sido codificada, no buscada en ninguna variable de entorno
Jaime Hablutzel
67

Aquí está la documentación:

https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

Una cadena de conexión básica se ve así:

jdbc:mysql://localhost:3306/dbname

La cadena class.forName es "com.mysql.jdbc.Driver", que puede encontrar (editar: ahora en la misma página).

Tim Sylvester
fuente
Los enlaces anteriores no funcionan. Aquí está un nuevo vínculo de trabajo: dev.mysql.com/doc/connector-j/en/...
hexicle
1
Si tengo tres propiedades que se utilizan en la cadena de conexión, ¿cómo sería el aspecto cadena de conexión como - por ejemplo: useOldAliasMetadataBehavior=true, useUnicode=true,characterEncoding=UTF-8
N00b Pr0grammer
17
"jdbc:mysql://localhost"

De los documentos de Oracle.

jdbc:mysql://[host][,failoverhost...]
[:port]/[database]
[?propertyName1][=propertyValue1]
[&propertyName2][=propertyValue2]

host: puerto es el nombre de host y el número de puerto de la computadora que aloja su base de datos. Si no se especifica, los valores predeterminados de host y puerto son 127.0.0.1 y 3306, respectivamente.

base de datos es el nombre de la base de datos a la que conectarse. Si no se especifica, se establece una conexión sin una base de datos predeterminada.

failover es el nombre de una base de datos en espera (MySQL Connector / J admite failover).

propertyName = propertyValue representa una lista de propiedades opcional, separada por "signos". Estos atributos le permiten indicarle a MySQL Connector / J que realice varias tareas.

Fintan Kearney
fuente
Si tengo tres propiedades que se utilizan en la cadena de conexión, ¿cómo sería el aspecto cadena de conexión como - por ejemplo: useOldAliasMetadataBehavior=true, useUnicode=true, characterEncoding=UTF-8
N00b Pr0grammer
@B Pavan Kumar Es un URI, por lo que las propiedades deben estar separadas por signos de unión ("&"), como se indica en la especificación que cité.
Tim Sylvester
1
@ N00bPr0grammerjdbc:mysql://[host][:port]/[database]?useOldAliasMetadataBehavior=true&useUnicode=true&characterEncoding=UTF-8
ssc-hrep3
5

Es muy simple :

  1. Vaya a MySQL workbench y busque Base de datos> Administrar conexiones
  2. verá una lista de conexiones. Haga clic en la conexión a la que desea conectarse.
  3. Verá pestañas alrededor de conexión, administración remota, perfil del sistema. Haga clic en la pestaña de conexión.
  4. su URL es jdbc:mysql://<hostname>:<port>/<dbname>?prop1etc, donde <hostname>y <port>se dan en la tab.It conexión serán en su mayor sea localhost: 3306. <dbname>se encontrarán en Sistema pestaña Perfil en Windows Nombre del servicio. El valor predeterminado será principalmente MySQL5<x> donde x es el número de versión, por ejemplo. 56 para MySQL5.6 y 55 para MySQL5.5, etc. También puede especificar su propio nombre de servicio de Windows para conectarse.
  5. Construya la URL en consecuencia y establezca la URL para conectarse.
Krishnan Devarajan
fuente
5

Para Mysql, la cadena de conexión del controlador jdbc es com.mysql.jdbc.Driver . Utilice el siguiente código para conectarse: -

class DBConnection {
   private static Connection con = null;
   private static String USERNAME = "your_mysql_username";
   private static String PASSWORD = "your_mysql_password";
   private static String DRIVER = "com.mysql.jdbc.Driver";
   private static String URL = "jdbc:mysql://localhost:3306/database_name";

   public static Connection getDatabaseConnection(){
       Class.forName(DRIVER);
       return con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
   }
}
Arun Kumar N
fuente
3

actualización para mySQL 8:

String jdbcUrl="jdbc:mysql://localhost:3306/youdatabase?useSSL=false&serverTimezone=UTC";

Nemət Abdullayev
fuente
2

Como la respuesta parece que ya ha sido respondida, no hay mucho que agregar, pero me gustaría agregar una cosa a las respuestas existentes. Esta fue la forma de cargar la clase para el controlador JDBC para mysql

com.mysql.jdbc.Driver

Pero esto ahora está en desuso. La nueva clase de conductor es ahora

com.mysql.cj.jdbc.Driver

Además, el controlador se registra automáticamente a través del SPI y la carga manual de la clase de controlador generalmente no es necesaria.

Rathore
fuente
0
String url = "jdbc:mysql://localhost:3306/dbname";
String user = "user";
String pass = "pass";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = DriverManager.getConnection (url, user, pass);

3306 es el puerto predeterminado para mysql.

Si está utilizando Java 7, no es necesario ni siquiera agregar el Class.forName("com.mysql.jdbc.Driver").newInstance (); declaración. La Gestión automática de recursos (ARM) se agrega en JDBC 4.1, que viene de forma predeterminada en Java 7.

El formato general de una URL JDBC para conectarse a un servidor MySQL es el siguiente, con los elementos entre corchetes ([]) siendo opcionales:

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] »
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]
Optimizador
fuente
0

protocolo // [hosts] [/ base de datos] [? propiedades]

Si no tiene ninguna propiedad ignórela, entonces será como

jdbc: mysql: //127.0.0.1: 3306 / prueba

jdbc: mysql es el protocolo 127.0.0.1: es el host y 3306 es el número de puerto prueba es la base de datos

NSC
fuente
0

depende del servicio que esté utilizando.

si usa MySQL Workbench, sería algo como esto:

jdbc: mysql: // "host": "número de puerto" /

String url = "jdbc:mysql://localhost:3306/";

Y, por supuesto, será diferente si usa SSL / SSH.

Para más información, siga el enlace oficial de Jetbriens (idea intelliJ):

Conectando a una base de datos #

https://www.jetbrains.com/help/idea/connecting-to-a-database.html


Configurando conexiones de base de datos #

https://www.jetbrains.com/help/idea/configuring-database-connections.html

ARiyou Jahan
fuente