把数据库配置文件的信息写在文件中,并且保存在项目内,在程序读取文件中的信息,从而进行数据库连接
在JAVA中提供 properties类 来读取.properties属性文件
在web工程中src目录下新建一个db.properties
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=pubs
username=sa
password=sa
下面的Env.java文件实现了db.properties文件的加载工作,代码如下:
package com.xinyang.db;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class Env {
private Connection conn=null;
private static Env instance;
private static Properties prop=new Properties();
private Env(){
//初始化属性prop对象
InputStream in=this.getClass().getResourceAsStream("/conn.properties");
try{
prop.load(in);
}catch(IOException ex){
ex.printStackTrace();
}
}
//单太构建实例
public static Env getInstances(){
if(instance==null){
instance=new Env();
}
return instance;
}
public String getProp(String key){
return (String)prop.getProperty(key);
}
}
下面的ConnDb.java文件实现了db.properties文件的读取内容工作并连接数据库,代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnDB {
private static Env instance=null;
private Connection conn=null;
public ConnDB(){
instance=Env.getInstances();
}
public Connection getConn(){
try {
Class.forName(instance.getProp("driver"));
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
if(conn==null||conn.isClosed()){
conn=DriverManager.getConnection(instance.getProp("url"),instance.getProp("username"),instance.getProp("password"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void main(String[] args){
ConnDB con=new ConnDB();
System.out.println(con.getConn());
}
}