在生产 过程 中,为了让部署 后的程序 有更方便 的移植 性,可以 使用 属性 文件 来做连接 配置sqlserverDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
步骤:
1、在项目的src目录下添加属性文件:db.properties
2、打开文件,将其内容改写为:
sqlserverDriver=com.microsoft.sqlserver.jdbc.SQLServerDriver
sqlserverUrl==jdbc:sqlserver://localhost:1433;DatabaseName=bookdb
sqlserverUser=sa
sqlserverPassword=123456
mysqlDriver=com.mysql.jdbc.Driver
mysqlUrl=jdbc:mysql://localhost:3306/bookdb
mysqlUser=root
mysqlPassword=123456
保存。
注:属性 文件 以“键=值”这种方式 来定义 ,键在定义 时,名字 可以 随意 起,值 要写对,对比 一下,就会发现 ,这和以前 的直接 将连接 信息 写到类中 是一样的。
3,、添加读写属性文件的单例文件(单例简单的说就是 一个类中只有自己的实例,且是私有的,不可被访问的)
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Env extends Properties {
private static final long serialVersionUID = 1L;
private static Env instance=null;
public static Env getInstance(){
if(instance!=null) return instance;
else{
makeInstance();
return instance;
}
}
/**
* 生成同步实例的方法
* synchronized 关键字保证这个实例是同步的,是加锁的
*/
private static synchronized void makeInstance(){
if(instance==null)
instance=new Env();
}
/**
* 构造私有的构造方法
*/
private Env(){
//从文件中得到/db.properties属性文件的输出流
// “/” 指代此文件的上层目录,即class目录
InputStream is=getClass().getResourceAsStream("/db.properties");
try {
load(is);//读取文件
is.close();//关闭程序输入流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4、书写连接数据库的基类
/**
* 数据库连接类
*
* @author 尹晴霞
*
*/
public class ConnectionProperties {
/**
* MYSQL的连接变量
*/
private static final String CLS = Env.getInstance().getProperty("mysqlDriver");
private static final String URL = Env.getInstance().getProperty("mysqlUrl");
private static final String USER = Env.getInstance().getProperty("mysqlUser");
private static final String PWD = Env.getInstance().getProperty("mysqlPassword");
/**
* SQLSERVER 的连接变量
*/
//同上,只是将key值变了而已
public static Connection conn = null;
public static Statement stmt = null;
public static PreparedStatement pStmt = null;
public static ResultSet rs = null;
/**
* 取得连接的方法
*/
public static void getConnection() {
try {
Class.forName(CLS);
conn = DriverManager.getConnection(URL, USER, PWD);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 关闭所有的数据库操作对象
*/
public static void closeAll() {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (pStmt != null) {
pStmt.close();
pStmt = null;
}
if (conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
5、属性文件的好处
属性 文件 的好处 是,当程序 已经 编写 完成 ,并且 已经 部署 后,这时 已经 没有 了源程序 (大家 可以 去查看 tomcat安装 目录 /webapps/books项目 ,看看还没有 java文件 ),如果 数据 库的配置 信息 发生 了变动 ,此时 可以 直接 修改 属 性文件 ,修改 完成 后,重新 启动 服务 器,即可以 直接 使用 ,而对应 将连接 写到 程序 中的方式 ,在程序 编译 完成 后,就没有 办法 修改 了,因此 属性 文件 的移植 性要好。