2012-03-12 81 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; 

} 
相关问题