天天看点

通用的JDBC连接实现

通用的JDBC连接实现

思路:配置文件配置数据库信息,工具类根据配置的信息到相应的数据库连接对象。同等条件下,数据源获取连接优先。

实现:

一、工具类

/**

 *  通用数据库连接工厂

 */

public class DBUtil {

    private static String driver;

    private static String dburl;

    private static String dbname;

    private static String user;

    private static String password;

    private static String datasource;

    private static final ConnectionFactory factory = new ConnectionFactory();

    private Connection conn;

    static {

        Properties prop = new Properties();

        try {

            InputStream in = ConnectionFactory.class.getClassLoader().getResourceAsStream("dbconfig.properties");

            prop.load(in);

        } catch (Exception e) {

            System.out.println("IO读取出错,找不到dbconfig.properties!");

        }

        datasource = prop.getProperty("datasource", "");

        driver = prop.getProperty("driver");

        dburl = prop.getProperty("dburl", "");

        user = prop.getProperty("user", "");

        password = prop.getProperty("password", "");

        //log.info("获取dbconfig.properties信息:driver=" + driver + "dburl=" + dburl + "\n" + "dbname=" + dbname + "\n" + "user=" + user + "\n" + "password=" + password + "\n" + "datasource=" + datasource + "\n");

    }

    private ConnectionFactory() {

    public static ConnectionFactory getInstance() {

        return factory;

    /**

     * 数据库链接工厂

     *

     * @return 返回一个数据库链接

     */

    public Connection makeConnection() {

        if (!"".equals(datasource)) {

            try {

                Context ctx = new InitialContext();

                DataSource ds = (DataSource) ctx.lookup(datasource);

                conn = ds.getConnection();

                return conn;

            } catch (NamingException e) {

                log.info("easyreport.properties的数据源找不到!");

                e.printStackTrace();

            } catch (SQLException e) {

                log.info("通过easyreport.properties数据源信息获取数据库连接出现异常!");

            }

        } else {

                Class.forName(driver);

            } catch (ClassNotFoundException e) {

                log.info("加载数据库驱动出现异常!");

                conn = DriverManager.getConnection(dburl + dbname, user, password);

                log.info("通过JDBC获取数据库连接发生异常!");

        return conn;

}

二、参考配置文件

# 示例配置参考,涵盖几乎所有的主流数据库

############# Oracle数据库 ########################

#   数据库驱动名

driver=oracle.jdbc.driver.OracleDriver

#   数据库URL(包括端口)

dburl=jdbc:oracle:thin:@127.0.0.1:1521:zvfdb

#   数据库用户名

user=root

#   用户密码

password=zvfims

############# DB2数据库 ########################

driver=com.ibm.db2.jcc.DB2Driver

dburl=jdbc:db2://127.0.0.1:50000/zvfdb

############# MySQL数据库 ########################

driver=com.mysql.jdbc.Driver

dburl=jdbc:mysql://127.0.0.1:3306/zvfdb

############# PostgreSQL数据库数据库 ########################

driver=org.postgresql.Driver

dburl=jdbcostgresql://127.0.0.1/zvfdb

############# SQLServer2000数据库 ########################

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

dburl=jdbc:microsoftqlserver://127.0.0.1:1433;DatabaseName=zvfdb

############# SQLServer2005数据库 ########################

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver

dburl=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=zvfdb

############# Informix数据库数据库 ########################

driver=com.informix.jdbc.IfxDriver

dburl=jdbc:informix-sqli://127.0.0.1:1533/zvfdb

############# Sybase数据库 ########################

driver=com.sybase.jdbc.SybDriver

dburl=jdbcybase:Tds:127.0.0.1:5007/zvfdb

#   数据源只能保留一个

############# Tomcat/JBoss数据源 #####################

datasource=java:comp/env/jdbc/zvfds

############# Websphere/WebLogic数据源 ##################

#datasource=zvfds

--------------------------------------------------------

参考文档:

<a href="http://dev2dev.bea.com.cn/bbsdoc/20060112181.html">[url]http://dev2dev.bea.com.cn/bbsdoc/20060112181.html[/url]</a>

1、Oracle8/8i/9i数据库(thin模式) 

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 

String url="jdbcracle:thinlocalhost:1521rcl"; //orcl为数据库的SID 

String user="test"; 

String password="test"; 

Connection conn= DriverManager.getConnection(url,user,password);

2、DB2数据库 

Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance(); 

String url="jdbc:db2://localhost:5000/sample"; //sample为你的数据库名 

String user="admin"; 

String password=""; 

3、Sql Server7.0/2000数据库 

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 

String url="jdbc:microsoftqlserver://localhost:1433;DatabaseName=mydb"; 

//mydb为数据库 

String user="sa"; 

4、Sybase数据库 

Class.forName("com.sybase.jdbc.SybDriver").newInstance(); 

String url =" jdbcybase:Tds:localhost:5007/myDB";//myDB为你的数据库名 

Properties sysProps = System.getProperties(); 

SysProps.put("user","userid"); 

SysProps.put("password","user_password"); 

Connection conn= DriverManager.getConnection(url, SysProps);

5、Informix数据库 

Class.forName("com.informix.jdbc.IfxDriver").newInstance(); 

String url = "jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver; 

user=testuser;password=testpassword"; //myDB为数据库名 

Connection conn= DriverManager.getConnection(url);

6、MySQL数据库 

Class.forName("org.gjt.mm.mysql.Driver").newInstance(); 

String url ="jdbc:mysql://localhost/myDB?user=soft&amp;password=soft1234&amp;useUnicode=true&amp;characterEncoding=8859_1" 

//myDB为数据库名 

7、PostgreSQL数据库 

Class.forName("org.postgresql.Driver").newInstance(); 

String url ="jdbcostgresql://localhost/myDB" //myDB为数据库名 

String user="myuser"; 

String password="mypassword"; 

8、access数据库直连用ODBC的

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;

String url="jdbcdbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb");

Connection conn = DriverManager.getConnection(url,"","");

Statement stmtNew=conn.createStatement() ;

本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/32711,如需转载请自行联系原作者