2012-02-01 12 views
5

Quiero almacenar correos electrónicos de Gmail en mi base de datos mysql. encontré Inboxreader con google pero la parte para la conexión a mysql no está funcionando. el nombre de usuario, el nombre de la base de datos, la contraseña es correcta.¿Cómo conectarse a mysql usando java?

alguien me puede ayudar. Gracias.

aquí es la parte del código

{ 
      Properties details= new Properties(); 
      details.load(new FileInputStream("details.properties")); 
      String userName = details.getProperty("root"); 
      String password = details.getProperty("password"); 
      String url = details.getProperty("jdbc:mysql://localhost/test"); 
      Class.forName ("com.mysql.jdbc.Driver").newInstance(); 
      conn = DriverManager.getConnection (url, userName, password); 
      System.out.println ("Database connection established"); 
      PreparedStatement st= conn.prepareStatement("insert into 'Email_list' values(?)"); 
      for(String mail:mails) 
      { 
      try{ 
        st.setString(1, mail); 
        st.execute(); 
       }catch(Exception e){} 
      } 



     } 
     catch (Exception e) 
     { 
      System.err.println ("Cannot connect to database server"); 
      e.printStackTrace(); 
     } 
     finally 

Aquí está el código de error:

Cannot connect to database server 
java.sql.SQLException: The url cannot be null 
Reading:23 
    at java.sql.DriverManager.getConnection(DriverManager.java:554) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 
    at inboxreader.InboxReader.connecttoMySql(InboxReader.java:181) 
    at inboxreader.InboxReader.Start(InboxReader.java:82) 
    at inboxreader.InboxReader.main(InboxReader.java:34) 

Gracias

Respuesta

7

Ésta es su problema:

String url = details.getProperty("jdbc:mysql://localhost/test"); 

Usted están obteniendo un null valor en url. Eso es porque no hay una propiedad llamada jdbc:mysql://localhost/test en su archivo de propiedades.

Tiene dos opciones. Uno sería utilizar url directamente con algo como:

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

La otra opción sería tener un configurado correctamente la propiedad en details.properties:

# hello, I am details.properties file 
jdbc.url=jdbc:mysql://localhost/test 

Luego, en el código Java que le lea url de propiedad de esta manera:

String url = details.getProperty("jdbc.url"); // note that we're changing property name 
+1

@Pacific - también hay ninguna razón para atar su código Java para MySQL. Como usted ya tiene 'details.properties' puesto en algo como' jdbc.url = jdbc: mysql: // etc' y 'jdbc.driver = com.mysql.jdbc.Driver' entonces se puede hacer' Class.forName (detalles .getProperty ("jdbc.driver")) ' –

2

Usted está tratando de obtener el valor de una propiedad de details como Thi s:

String url = details.getProperty("jdbc:mysql://localhost/test"); 

Me parece que el nombre de la propiedad es realmente su valor.

+0

Muchas gracias señor Pablo, Sergio y fivedigit – Pacific

2

Eso es porque no tiene una clave "jdbc: mysql: // localhost/test" en su archivo de propiedades. Digamos que tienen details.properties este contenido:

url=jdbc:mysql://localhost/test 

Así que el código debe ser

String url = details.getProperty("url"); 
0

i estoy prety seguro de que su clave de propiedad es mala: String url = details.getProperty (" jdbc: mysql: // localhost/test ");

se puede utilizar para validar si tiene la clave correcta

si (details.getProperty ("jdbc: mysql: // localhost/test"!) = Null || details.getProperty ("jdbc: mysql : // localhost/test ") .trim(). length> 0) { url = detalles.getProperty ("jdbc: mysql: // localhost/test"); } else {

retorno nueva excepción ("clave de propiedad incorrecto"); }

Saludos

+0

Ahora mi código está trabajando, pero he cometido un error sé que el nombre de la base es de prueba, el nombre de la tabla es EMAIL_LIST pero cuando voy mysql la tabla es Email_list está vacía. – Pacific

+0

"cuando voy a mysql la tabla es Email_list está vacía" significa cuando estás usando mysql ide? o cuando estableces la conexión? – elopez

Cuestiones relacionadas