2009-09-22 8 views
94

Soy nuevo en JDBC y estoy tratando de establecer una conexión con una base de datos MySQL. Estoy usando el controlador Connector/J, pero no puedo encontrar la cadena de conexión JDBC para mi método Class.forName().¿Cuál es la cadena de conexión del controlador JDBC de MySQL?

+4

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

Respuesta

97

Asumiendo que su conductor está en camino,

String url = "jdbc:mysql://localhost/test"; 
Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
Connection conn = DriverManager.getConnection (url, "username", "password"); 
+1

¿cómo se encuentra la ruta jdbc si no está en variables de entorno? –

+1

En el código de ejemplo, la URL de JDBC se ha codificado, no se ha buscado en ninguna variable de entorno –

56

¿Ha leído 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 parece a:

jdbc:mysql://localhost:3306/dbname 

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

+0

Los enlaces anteriores no funcionan. Aquí hay un nuevo enlace de trabajo: https://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html – hexicle

+0

Reparado, gracias por el encabezado @hexicle. –

+0

Si tengo tres propiedades para usar en la cadena de conexión, ¿cómo se vería la cadena de conexión? Por ejemplo: 'useOldAliasMetadataBehavior = true',' useUnicode = true', 'characterEncoding = UTF-8' –

12
"jdbc:mysql://localhost" 

De la documentación de Oracle ..

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

host: puerto es el nombre de host y número de puerto del equipo que aloja la 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 se conecta. 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 y separada por ampersand. Estos atributos le permiten indicar a MySQL Connector/J que realice varias tareas.

+0

Si tengo tres propiedades para usar en la cadena de conexión, ¿cómo sería la cadena de conexión? Por ejemplo: 'useOldAliasMetadataBehavior = true',' useUnicode = true', 'characterEncoding = UTF-8' –

+0

@B Pavan Kumar Es un URI, por lo que las propiedades deben estar separadas por símbolos ("&"), como se indica en la especificación que cité. –

+1

@ N00bPr0grammer 'jdbc: mysql: // [host] [: puerto]/[base de datos]? UseOldAliasMetadataBehavior = true & useUnicode = true & characterEncoding = UTF-8' –

2

Es muy simple:

  1. Ir a MySQL banco de trabajo y las operaciones de búsqueda de base de datos> Administrar conexiones
  2. verá una lista de conexiones. Haga clic en la conexión a la que desea conectarse.
  3. Verá una pestaña sobre la conexión, la administración remota, el perfil del sistema. Haga clic en la pestaña de conexión.
  4. su URL es jdbc:mysql://<hostname>:<port>/<dbname>?prop1 etc. donde <hostname> y <port> se dan en la conexión tab.It en su mayoría serán localhost: 3306. <dbname> se encuentran 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.Puede especificar su propio nombre de Servicio de Windows para conectarse también.
  5. Construya la URL en consecuencia y configure la url para conectarse.
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 por defecto para MySQL.

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

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

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