我正在阅读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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我检查了API,我了解属性的主要好处是阅读本地资源.Google OCI驱动程序示例使用java.util.properties以上的驱动程序示例.我的问题是;
*我应该使用薄驱动程序的属性吗?*如果是的话会有什么好处?
*为什么我不能将完整的详细信息转换为我必须使用String对象进行连接的属性?
谢谢
可以从jdbc.properties类路径上的某个文件加载属性,这允许您进行外部配置.它的唯一内容可能如下:
user=sys as sysdba
password=testpass
Run Code Online (Sandbox Code Playgroud)
所以,而不是
info.put("user", "sys as sysdba");
info.put("password", "testpass");
Run Code Online (Sandbox Code Playgroud)
你能做到的
info.load(getClass().getResourceAsStream("/jdbc.properties"));
Run Code Online (Sandbox Code Playgroud)
(请注意,文件名可以自由选择,只要它在运行时类路径中就可以工作)
这样,无论何时想要更改连接详细信息,都无需编辑,重新编译,重建,大惊小怪.您只需编辑一个简单的基于文本的文件.这在需要由没有任何Java知识的人(例如serveradmins)管理的分布式应用程序中特别有用.