JDBC + MySql + Java con Eclipse sobre Ubuntu

Imagen de nercof
0 puntos

Antes que nada les quiero agradecer la oportunidad de postear algo aquí. Les comento resumidamente cual es mi problema con JDBC mas especificamente. Estoy desarrollando un sistema para aprender este lenguaje, y llegue a una instancia que necesito persistir los datos. Y me decidi por utilizar jdbc para conectarme a mysql.

Utilizo:

* Eclipse SDK - Version: 3.1.2- Build id: M20060118-1600 (Ubuntu version: 3.1.2-1ubuntu6)

* MySql 5.0.22

* el driver de java tambien es el 5.0.5

 * Ubuntu Dapper 6.0.6 

Problema: "No logro conectarme a la base de datos desde el Eclipse utilizando el driver JDBC". Y ese problema ya lo solucione, es decir el driver se carga en memoria correctamente. Les paso un trozo de código para que lo vean y despues les dejo la salida del error.

<code>

import java.sql.*;

public class TestMySql
{
public static void main(String args[]) {

try {

System.out.println( "=> Cargando el driver ... :" );
Class.forName("com.mysql.jdbc.Driver");
System.out.println( "OK" );

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

System.out.println( "=> Conectando ... :" );
conexion = DriverManager.getConnection( url, "root", "pepe" );

Connection conexion = DriverManager.getConnection (url,"root", "pepe");

System.out.println("URL: " + url);
System.out.println("Connection: " + conexion);

if(conexion != null){
System.out.println( "OK--> nos conectamos" );
}
}
catch( Exception ex ) {

System.out.println("Ahora es la execpcion para el Connection");
System.out.println("SQLException: " + ex.getMessage());

}

}
}

</code>

Y al Ejecutar eso, esto es lo que me devuelve en la consola:

=> Cargando el driver ... :
OK
Ahora es la execpcion para el Connection
SQLException: Error during query: Unexpected Exception: java.io.CharConversionException message given: null

Nested Stack Trace:

** BEGIN NESTED EXCEPTION **

java.io.CharConversionException

STACKTRACE:

java.io.CharConversionException
at gnu.gcj.convert.Input_iconv.read(libgcj.so.7)
at java.lang.String.init(libgcj.so.7)
at java.lang.String.<init>(libgcj.so.7)
at com.mysql.jdbc.SingleByteCharsetConverter.<init>(SingleByteCharsetConverter.java:153)
at com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:108)
at com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:86)
at com.mysql.jdbc.Connection.getCharsetConverter(Connection.java:3471)
at com.mysql.jdbc.StringUtils.getBytes(StringUtils.java:609)
at com.mysql.jdbc.Buffer.writeStringNoNull(Buffer.java:655)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1678)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3243)
at com.mysql.jdbc.Connection.configureClientCharacterSet(Connection.java:2509)
at com.mysql.jdbc.Connection.initializePropsFromServer(Connection.java:4096)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2758)
at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
at java.sql.DriverManager.getConnection(libgcj.so.7)
at java.sql.DriverManager.getConnection(libgcj.so.7)
at TestMySql.main(TestMySql.java:25)

** END NESTED EXCEPTION **

Eh buscado en google y no encuentro esta exepcion en particular. Al principio no lograba conectar el driver, pero investigando encontre un buen tutorial que explicaba eso: http://www.cs.wcupa.edu/~rkline/mysql-java-lin.html.

En que me estoy equivocando?. Les agradesco nuevamente. Si alguien sabe de un tutorial, le agradeceria.

Imagen de marckmarck
+1
0
-1

Podria ser simplemente que no le pones el puerto normalmente es el 3306.

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

+1
0
-1
Imagen de nercof
+1
0
-1

... probé como me dijiste e igual me da la misma secuencia de error.

Gracias igual por el hecho de contestarme :) 

P/D: Te ha pasado esto?.Es decir, es usual a solo pq soy novato en este lenguaje?, jeje.

Nos vemos, suerte 

+1
0
-1
Imagen de marckmarck
+1
0
-1

Por Fases:

Tienes el el server y el client de mysql???

Si los tienes haz:
$ sudo mysql
para acceder a la consola de mysql y muestra sus databases:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.02 sec)

a ver si tienes la tuya.

Por que el codigo java lo he mirado y parece q esta bien..
Si dices que carga correctamente el driver. Por que lo has añadido al proyecto no??

+1
0
-1
Imagen de nercof
+1
0
-1

Tengo instalado el server y client de mysql,y estas son mis BD:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| Gestionbra |
| PABLO |
| agendita |
| amarok |
| archivador |
| cursojsp |
| mybd |
| mysql |
| searchCd |
| test |
+--------------------+
11 rows in set (0.01 sec)

Antes programaba en PHP con el paquete LAMP. Por esto es que no se mucho de este lenguaje. Y con respecto a lo que mencionas arriba :

"[...] Si dices que carga correctamente el driver. Por que lo has añadido al proyecto no?? [...]"

No entiendo eso. A que te referis?, que no hay que cargar el driver en el proyecto?.

desde ya muchas gracias :)

 

+1
0
-1
Imagen de sieira
+1
0
-1

Yo recibo el mismo fallo al crear una conexión desde el plug-in SQL Explorer, y desde PDT, por algún motivo eclipse no quiere conectarse...

eclipse->3.2.2

mysql -> 5.0.38

java -> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)

Conexión desde SQL Explorer->

Connection Profile XXXX

Driver MySQL Driver

url jdbc:mysql://localhost/database

Conexión de la base de datos ->Server Hostname: localhost Port: 3306

Lo que toqueteé antes de que dejase de funcionar es el driver en cuestión, porque para otros plugins parecía no funcionar.

Los datos del driver son:

DRIVER

Name: MySQL Driver

Example URL: jdbc:mysql://localhost:3306/test

JavaClassPath: /usr/lib/eclipse/startup.jar

ExtraClass Path : /usr/local/packages/mysql-connector-java-5.0.7-bin.jar (Este lo puse yo aquí, y para asegurarme de que no era problema tiene permisos de lectura, escritura y ejecución para todos los usuarios)

Driver class name: org.gjt.mm.mysql.Driver

 

Esto lo hice siguiendo unos cuantos tutoriales con la esperanza de solucionar otro problema... supongo que el problema está ahi,

+1
0
-1
Imagen de delr2691
+1
0
-1

Saludos, 

Sieira, prueba poniendo en Driver Class Name "com.mysql.jdbc.Driver"

Diego L

+1
0
-1

Diego L

Imagen de bf_raul
+1
0
-1

Yo tuve el mismo problema y lo resolví cambiando la JDK que viene por defecto

ESTA:

java version "1.5.0"
gij (GNU libgcj) version 4.2.3 (Ubuntu 4.2.3-2ubuntu6)

POR LA DE SUN:

java version "1.6.0_06"
Java(TM) SE Runtime Environment (build 1.6.0_06-b02)
Java HotSpot(TM) Client VM (build 10.0-b22, mixed mode, sharing)

Supongo que será por que el driver del jconnector fue compilado con esta máquina virtual de java de SUn en vez de la de Ubuntu.  Si quieres o necesitas correr la clase que connecta a mySQL con la primera de las máquinas supongo que tambien podría arreglarse el problema compilando los fuentes del jConnector con la JDK que trae ubuntu por defecto.

 

+1
0
-1