2012-02-01 109 views
5

我想將Gmail中的電子郵件存儲到我的mysql數據庫中。 我發現Inboxreader與谷歌,但部分連接到MySQL是行不通的。 用戶名,數據庫名稱,密碼是否正確。如何使用java連接到mysql?

任何人都可以幫助我。 謝謝。

這裏是代碼

{ 
      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 

這裏的一部分是錯誤代碼:

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) 

謝謝

回答

7

這是你的問題:

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

你正在獲得在url中的值爲。這是因爲您的屬性文件中沒有屬性jdbc:mysql://localhost/test

您有兩種選擇。一會直接使用url的東西,如:

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

另一個選項是具有details.properties正確設置屬性:

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

然後,在Java代碼中,你會從屬性讀取url像這樣:

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

@Pacific - 但也沒有理由去配合你的Java代碼到MySQL。因爲你已經有'details.properties'放入類似'jdbc.url = jdbc:mysql:// etc'和'jdbc.driver = com.mysql.jdbc.Driver'的東西,那麼你可以做'Class.forName(details .getProperty(「jdbc.driver」))' – 2012-02-01 20:08:04

2

你試圖從details像THI得到一個屬性的值s:

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

在我看來,那裏的財產的名稱實際上是你的價值。

+0

非常感謝帕布羅先生,塞爾吉奧和fivedigit – Pacific 2012-02-01 20:13:03

2

那是因爲您的屬性文件中沒有一個鍵「jdbc:mysql:// localhost/test」。比方說,details.properties有這樣的內容:

url=jdbc:mysql://localhost/test 

所以,你的代碼應該是

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

我敢prety確保您的屬性鍵不好: 字符串URL = details.getProperty(」 JDBC:MySQL的://本地主機/測試「);

,如果你有正確的密鑰

如果(details.getProperty( 「JDBC:MySQL的://本地主機/測試」,你可以使用驗證)!=空|| details.getProperty(「JDBC:MySQL的:// localhost/test「).trim()。length> 0){ url = details。的getProperty( 「JDBC:MySQL的://本地主機/測試」); } else {

return new exception(「Wrong property key」); }

Saludos

+0

現在我的代碼工作,但我犯了一個錯誤,我知道數據庫名稱是測試,表名是Email_list,但是當我去到mysql的表是Email_list是空的。 – Pacific 2012-02-01 20:39:04

+0

「當我去mysql的表是Email_list是空的」意味着當你使用mysql ide?或者當你建立連接?時, – elopez 2012-02-01 22:43:42