java-如何在配置文件中设置JDBC连接属性?

时间:2018-11-19 09:02:59

标签: java mysql jdbc

我有一个简单的Java程序,该程序使用JDBC驱动程序建立与MySQL的连接。连接属性本身在代码中进行了硬编码。看起来像这样:

    Class.forName("com.mysql.jdbc.Driver");

    connect = DriverManager
            .getConnection("jdbc:mysql://126.32.3.11/test?"
                    + "user=root&password=root");

这里的问题是,如果我为程序创建了一个可执行的jar文件,每次我想更改连接(例如与某人的其他连接),那么我都必须在代码本身内部进行更改,并创建一个更新的jar文件。这很麻烦。

有没有一种方法可以在配置文件中设置连接,以便每次我想更改连接详细信息时,都可以通过某种配置对其进行更改?

赞赏任何建议

1 个答案:

答案 0 :(得分:1)

您可以使用which is the best way to externalize a database configuration on a desktop app?帖子中给出的Class.getResourceAsStream ("resource.properties");

以下是示例

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Post11 {
 private static final String filename = "application.properties";
  public static void main( String[] args ){

        Properties prop = new Properties();
        InputStream input = null;

        try {

            input = Post11.class.getClassLoader().getResourceAsStream(filename);
            if(input==null){
                    System.out.println("Sorry, unable to find " + filename);
                return;
            }

            //load a properties file from class path, inside static method
            prop.load(input);

                //get the property value and print it out
                System.out.println("db: "+prop.getProperty("database"));
                System.out.println("user: "+prop.getProperty("dbuser"));
                System.out.println("password: "+prop.getProperty("dbpassword"));

        } catch (IOException ex) {
            ex.printStackTrace();
        } finally{
            if(input!=null){
                try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            }
        }

    }
}

application.properties

database=db
dbuser=asdf
dbpassword=password

输出如下所示

db: db
user: asdf
password: password