java - 连接数据库时使用 java.util.properties 有什么好处?

标签 java oracle jdbc

我正在阅读Oreilly Java Programming With Oracle JDBC edition我注意到有一个使用 java.util.properties 对象的示例,如下所示;

public class Connector {


    Connection con = null;
    private Properties info = new Properties();

    public void connect(){
        info.put("user", "sys as sysdba");
        info.put("password", "testpass");
        String driverName = "oracle.jdbc.driver.OracleDriver";

        try {
            Class.forName(driverName);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        String serverName = "localhost";
        String port = "1521";
        String sid = "XE";
        String url = "jdbc:oracle:thin:@" + serverName + ":" + port + ":" + sid;



        try {
            con = DriverManager.getConnection(url, info);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public void closeConnection(){

        try {
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

我检查了 API,我了解属性的主要好处是读取本地资源。使用 java.util.properties 的 Google OCI 驱动程序示例比瘦驱动程序示例更多。我的问题是;

*我应该使用瘦驱动程序的属性吗? *如果是的话会有什么好处?

*为什么我无法将完整详细信息转换为必须使用 String 对象进行连接的属性?

谢谢

最佳答案

属性可以从类路径上的某些jdbc.properties文件加载,这允许您进行外部配置。它的唯一内容可能如下所示:

user=sys as sysdba
password=testpass

所以,而不是

info.put("user", "sys as sysdba");
info.put("password", "testpass");

可以

info.load(getClass().getResourceAsStream("/jdbc.properties"));

(请注意,文件名可以自由选择,只要它在运行时类路径中就可以工作)

这样,每当您想要更改连接详细信息时,您都不需要编辑、重新编译、重建、大惊小怪的类。您只需编辑一个简单的文本文件即可。这对于需要由没有任何 Java 知识的人员(例如服务器管理员)管理的分布式应用程序特别有用。

另请参阅:

关于java - 连接数据库时使用 java.util.properties 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521968/

相关文章:

java - Oracle 高级队列 : Change Queue Properties at Runtime

java - 为什么当我的结果集类型是 forward only 时我可以使用 first() 方法?

使用 JDBC 的 Java MySQL 查询

database - Oracle Database12c ORA 01918 和连接错误

oracle - ORA-31600 : invalid input value CHAIN for parameter OBJECT_TYPE

java - 如何将 Java 字符串转换为 Teradata 日期和时间戳

java客户端服务器端序列化问题

java - 要求补丁颜色时用 Java 错误控制 NetLogo?

java - 数据库连接 - java.net.UnknownHostException

java - Jar 文件无法正常工作,出现错误 : Invalid jar file