java中读取配置文件的方法和数据库底层的编写

       最近在做一个OA(办公自动化)系统,看到别人写的关于读取配置文件的代码:

/*
 * Created on 2005-11-6
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 
*/

package  com.mycompany.database;

import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.SQLException;
import  java.util.Enumeration;
import  java.util.Hashtable;
import  java.util.PropertyResourceBundle;

import  javax.naming.Context;
import  javax.naming.InitialContext;
import  javax.naming.NamingException;
import  javax.sql.DataSource;

/**
 * 
@author Administrator
 * 
 * TODO To change the template for this generated type comment go to Window -
 * Preferences - Java - Code Style - Code Templates
 
*/

public   class  Database  {
    
/**
     * 数据库访问URL
     
*/

    
private static String url;

    
/**
     * 数据库驱动
     
*/

    
private static String driver;

    
/**
     * 数据库访问用户名
     
*/

    
private static String username;

    
/**
     * 数据库访问口令
     
*/

    
private static String password;

    
/**
     * 访问类型
     
*/

    
private static String type;

    
/**
     * 数据源名称
     
*/

    
private static String datasource;

    
/**
     * 配置文件名称
     
*/

    
private final static String fileName = "database";

    
private static ThreadLocal connection = new ThreadLocal();

    
static {
        config();
    }


    
private static void config() {
        
//读取系统配置
        PropertyResourceBundle resourceBundle = (PropertyResourceBundle) PropertyResourceBundle
                .getBundle(fileName);
        
//将系统设置赋值给类变量
        Enumeration enu = resourceBundle.getKeys();
        
while (enu.hasMoreElements()) {
            String propertyName 
= enu.nextElement().toString();
            
if (propertyName.equals("database.url"))
                url 
= resourceBundle.getString("database.url");
            
if (propertyName.equals("database.driver"))
                driver 
= resourceBundle.getString("database.driver");
            
if (propertyName.equals("database.username"))
                username 
= resourceBundle.getString("database.username");
            
if (propertyName.equals("database.password"))
                password 
= resourceBundle.getString("database.password");
            
if (propertyName.equals("database.type"))
                type 
= resourceBundle.getString("database.type");
            
if (propertyName.equals("database.datasource"))
                datasource 
= resourceBundle.getString("database.datasource");
        }


    }


    
/**
     * 取得数据库连接
     * 
@return
     * 
@throws SQLException
     
*/

    
public synchronized static java.sql.Connection getConnection()
            
throws SQLException {
        Connection con 
= (Connection) connection.get();
        
if (con != null && !con.isClosed()) {
            
return con;
        }

        
if ("pooled".equalsIgnoreCase(type)) {
            
//从JNDI中取得数据源
            try {
                
//此处对于不同的应用服务器,对env传入不同
                Hashtable env = new Hashtable();
                
//此处对于不同的应用服务器,对env传入不同
                Context ctx = new InitialContext(env); // 从命名系统中获取 DataSource 工厂对象
                DataSource dataSource = (DataSource) ctx.lookup(datasource);
                con
= dataSource.getConnection();
                connection.set(con);
                
return con;
            }
 catch (NamingException e) {
                e.printStackTrace();
            }

        }
 else {
            
//直接使用JDBC驱动连接
            try {
                Class providerClass 
= Class.forName(driver);
                con 
= DriverManager.getConnection(url, username,
                        password);
                con.setAutoCommit(
false);
                connection.set(con);
                
return con;

            }
 catch (ClassNotFoundException e) {
                e.printStackTrace();
            }

        }

        
return null;
    }


    
public static void commit() {
        Connection con 
= (Connection) connection.get();
        
try {
            con.commit();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }

    }


    
public static void rollback() {
        Connection con 
= (Connection) connection.get();
        
try {
            con.rollback();
        }
 catch (SQLException e) {
            e.printStackTrace();
        }

    }


    
public synchronized static void releaseConnection(Connection connection) {

        
try {
            
if (connection != null && !connection.isClosed())
                connection.close();
        }
 catch (SQLException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        connection 
= null;
    }

public static void main(String[] args) {
    
    
try {
        Database.getConnection();
    }
 catch (SQLException e) {
        
// TODO Auto-generated catch block
        e.printStackTrace();
    }

}

}

  其中数据库配置文件为database.propertes,放置在与包位置平行的文件夹下:

database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost/news?user=root&password=123456&useUnicode=true&characterEncoding=gbk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值