读写属性文件
把有關數據庫配置的信息寫在文件中,并且保存在項目內,在程序中讀取文件中的信息,從而進行數據庫連接. 在Java中提供了Properties類,來讀取 .properties(屬性)文件. 在項目默認路徑(src)下創建文件.名稱為 db.properties(名稱可自定義,擴展名必需為properties),編輯文件內容所下所示:
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=books
user=sa
password=1200
在程序調用Properties類的load()方法時,系統把db.properties文件的內容加載到內存中.因為Properties類繼承了Hashtable,Properties類把"="之前的內容,如driver,url等,等添加到Hashtable對象的Key值,并同時添加key值對應的value,也就是"="右側的值.所以在編寫.properties文件時一定要使用"="號把名稱與值分隔開吶..呵呵...
(注:通過.properties文件形式只能保存String類型信息)
=====================================================
package haha;
import java.util.Properties;
import java.io.IOException;
import java.io.InputStream;
public class Env extends Properties {
private static Env instance;
public static Env getInstance() {
??// 以單例模式創建,獲得對象實例
??if (instance != null) {
?? return instance;
??} else {
?? makeInstance();
?? return instance;
??}
}
// 同步方法。保證在同一時間,只能被一個人調用吶。呵呵。。
private static synchronized void makeInstance() {
??if (instance == null) {
?? instance = new Env();
??}
}
private Env() {
??InputStream is=getClass().getResourceAsStream("/db.properties");
??try {
?? load(is);
??} catch (IOException e) {
?? e.printStackTrace();
?? System.out.println("錯誤:沒有讀取屬性文件,請確認db.properties文件是否存在!!!");
??}
}
}
==============================================================
package haha;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
public static synchronized Connection getConnection() {
??//讀取配置信息
??String driverClassName=Env.getInstance().getProperty("driver");
??String url=Env.getInstance().getProperty("url");
??String password=Env.getInstance().getProperty("password");
??String user=Env.getInstance().getProperty("user");
??Connection connection=null;
??try {
?? Class.forName(driverClassName);
?? connection=DriverManager.getConnection(url,user,password);
??} catch (ClassNotFoundException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??} catch (SQLException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??}
??return connection;
}
...............// 關閉連接方法
}
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=books
user=sa
password=1200
在程序調用Properties類的load()方法時,系統把db.properties文件的內容加載到內存中.因為Properties類繼承了Hashtable,Properties類把"="之前的內容,如driver,url等,等添加到Hashtable對象的Key值,并同時添加key值對應的value,也就是"="右側的值.所以在編寫.properties文件時一定要使用"="號把名稱與值分隔開吶..呵呵...
(注:通過.properties文件形式只能保存String類型信息)
=====================================================
package haha;
import java.util.Properties;
import java.io.IOException;
import java.io.InputStream;
public class Env extends Properties {
private static Env instance;
public static Env getInstance() {
??// 以單例模式創建,獲得對象實例
??if (instance != null) {
?? return instance;
??} else {
?? makeInstance();
?? return instance;
??}
}
// 同步方法。保證在同一時間,只能被一個人調用吶。呵呵。。
private static synchronized void makeInstance() {
??if (instance == null) {
?? instance = new Env();
??}
}
private Env() {
??InputStream is=getClass().getResourceAsStream("/db.properties");
??try {
?? load(is);
??} catch (IOException e) {
?? e.printStackTrace();
?? System.out.println("錯誤:沒有讀取屬性文件,請確認db.properties文件是否存在!!!");
??}
}
}
==============================================================
package haha;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
public static synchronized Connection getConnection() {
??//讀取配置信息
??String driverClassName=Env.getInstance().getProperty("driver");
??String url=Env.getInstance().getProperty("url");
??String password=Env.getInstance().getProperty("password");
??String user=Env.getInstance().getProperty("user");
??Connection connection=null;
??try {
?? Class.forName(driverClassName);
?? connection=DriverManager.getConnection(url,user,password);
??} catch (ClassNotFoundException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??} catch (SQLException e) {
?? // TODO Auto-generated catch block
?? e.printStackTrace();
??}
??return connection;
}
...............// 關閉連接方法
}
總結
- 上一篇: 鱼头什么不能吃?
- 下一篇: 冷冻薯条为什么炸不脆?