2012-02-01 10 views
5

Chcę przechowywać e-maile z Gmaila w mojej bazie danych mysql. znalazłem Inboxreader z google, ale część do połączenia z mysql nie działa. nazwa użytkownika, nazwa bazy danych, hasło jest poprawne.Jak połączyć się z MySQL za pomocą Java?

Czy ktoś może mi pomóc. Dziękuję.

tutaj jest część kodu

{ 
      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 

Oto kod błędu:

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) 

Dziękuję

Odpowiedz

7

To jest twój problem:

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

Ty otrzymujesz numer null wartość w url. Dzieje się tak, ponieważ w twoim pliku właściwości nie ma właściwości o nazwie jdbc:mysql://localhost/test.

Masz dwie opcje. Można by używać url bezpośrednio z czymś takim:

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

Inną opcją byłoby o prawidłowo skonfigurować właściwości w details.properties:

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

Następnie w kodzie Java byś czytać url od nieruchomości tak:

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

@Pacific - tam też nie ma powodu, aby związać swój kod Java do MySQL. Ponieważ masz już 'detail.properties' wstawiony w coś w stylu' jdbc.url = jdbc: mysql: // etc' i 'jdbc.driver = com.mysql.jdbc.Driver', możesz zrobić' Class.forName (szczegóły .getProperty ("jdbc.driver")) ' –

2

próbujesz uzyskać wartość nieruchomości od details jak jes s:

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

Wydaje mi się, że nazwa obiektu jest rzeczywiście swoją wartość.

+0

Dziękuję bardzo Sir Pablo, Sergio i pięciocyfrowym – Pacific

2

To dlatego, że nie masz jednego klucza "jdbc: mysql: // localhost/test" w swoim pliku właściwości. Powiedzmy, że details.properties mieć tę zawartość:

url=jdbc:mysql://localhost/test 

więc kod powinien być

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

jestem prety pewność, że klucz nieruchomość jest zły: String url = details.getProperty (” jdbc: mysql: // localhost/test ");

można używać do sprawdzania, czy masz prawidłowy klucz

if (details.getProperty ("jdbc: mysql: // localhost/test"!) = Null || details.getProperty ("jdbc: mysql : // localhost/test ") .trim(). length> 0) { url = szczegóły.getProperty ("jdbc: mysql: // localhost/test"); } else {

return new Exception ("Wrong property key"); }

Saludos

+0

Teraz mój kod działa, ale popełniłem błąd i wiem, że nazwa bazy danych to test, nazwa tabeli to lista_telefonów, ale kiedy idę do mysql tabela jest Email_list jest pusta. – Pacific

+0

"Kiedy idę do mysql tabela jest na liście mailowej jest pusta" oznacza kiedy używasz mysql ide? lub kiedy nawiązujesz połączenie ?, – elopez

Powiązane problemy