2012-03-12 105 views
1

我怎樣才能將我的mysql數據庫url,用戶名和密碼放在一個文件中,我如何訪問它們以便在我的java代碼中使用,而不是硬編碼它們。我試過谷歌,但沒有得到明確的方向mysql數據庫網址,用戶名和密碼在文件中

+1

你的意思是創建某種配置文件,爲您的Java應用程序? – tadman 2012-03-12 18:57:42

+0

是的。這是最好的套件此連接,否則現在我只能在代碼中指定它們之後運行我的應用程序,這將在文件中更好地完成 – ken 2012-03-12 19:06:21

回答

3

創建一個properties file。您可以通過the Properties API加載它。

E.g. config.properties

url = jdbc:mysql://localhost:3306/dbname 
username = foo 
password = bar 

然後,你可以加載和閱讀如下(你把它夾在類路徑後):

Properties config = new Properties(); 
config.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties")); 

String url = config.getProperty("url"); 
String username = config.getProperty("username"); 
String password = config.getProperty("password"); 
// ... 
+0

感謝代碼@BalusC。讓我試試看。我只是不知道如何開始創建屬性文件 – ken 2012-03-12 19:13:58

+0

這只是一個文本文件。使用任何你想要的文本編輯器。例如。記事本。 – BalusC 2012-03-12 19:23:20

+0

謝謝。我創建了屬性文件,在指定路徑時遇到了一些問題,但最終完成了它 – ken 2012-03-14 15:01:50

0
/** 
* Function that connects to a DB and data fro connection is loaded from a properties file 
* @param fileName 
* @return the connection to DB or null if any problem 
*/ 
public java.sql.Connection connect_to_database_from_properties(String fileName) 
{ 
    Properties prop = new Properties(); 

    InputStream is; 
    try { 
     is = new FileInputStream(fileName); 

    prop.load(is); 
    String url=prop.getProperty("url"); 
    String un=prop.getProperty("username"); 
    String pass=prop.getProperty("password"); 
    System.out.println("URL: "+url+" UN: "+un+" PASS: "+pass); 
    is.close(); 
    Class.forName("com.mysql.jdbc.Driver"); 

    java.sql.Connection conection =DriverManager.getConnection(url, un, pass); 
    return conection; 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return null; 

} 
相關問題