通用的JDBC连接实现

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
通用的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", "");
        datasource = prop.getProperty("datasource", "");
        //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数据源信息获取数据库连接出现异常!");
                e.printStackTrace();
            }
        } else {
            try {
                Class.forName(driver);
            } catch (ClassNotFoundException e) {
                log.info("加载数据库驱动出现异常!");
                e.printStackTrace();
            }
            try {
                conn = DriverManager.getConnection(dburl + dbname, user, password);
 
            } catch (SQLException e) {
                log.info("通过JDBC获取数据库连接发生异常!");
                e.printStackTrace();
            }
        }
        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
#   数据库URL(包括端口)
dburl=jdbc:db2://127.0.0.1:50000/zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# MySQL数据库 ########################
#   数据库驱动名
driver=com.mysql.jdbc.Driver
#   数据库URL(包括端口)
dburl=jdbc:mysql://127.0.0.1:3306/zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# PostgreSQL数据库数据库 ########################
#   数据库驱动名
driver=org.postgresql.Driver
#   数据库URL(包括端口)
dburl=jdbcostgresql://127.0.0.1/zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# SQLServer2000数据库 ########################
#   数据库驱动名
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#   数据库URL(包括端口)
dburl=jdbc:microsoftqlserver://127.0.0.1:1433;DatabaseName=zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# SQLServer2005数据库 ########################
#   数据库驱动名
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#   数据库URL(包括端口)
dburl=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# Informix数据库数据库 ########################
#   数据库驱动名
driver=com.informix.jdbc.IfxDriver
#   数据库URL(包括端口)
dburl=jdbc:informix-sqli://127.0.0.1:1533/zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
############# Sybase数据库 ########################
#   数据库驱动名
driver=com.sybase.jdbc.SybDriver
#   数据库URL(包括端口)
dburl=jdbcybase:Tds:127.0.0.1:5007/zvfdb
#   数据库用户名
user=root
#   用户密码
password=zvfims
 
#   数据源只能保留一个
############# Tomcat/JBoss数据源 #####################
datasource=java:comp/env/jdbc/zvfds
############# Websphere/WebLogic数据源 ##################
#datasource=zvfds
 
--------------------------------------------------------
参考文档:
 
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=""; 
Connection conn= DriverManager.getConnection(url,user,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"; 
String password=""; 
Connection conn= DriverManager.getConnection(url,user,password);

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&password=soft1234&useUnicode=true&characterEncoding=8859_1" 
//myDB为数据库名 
Connection conn= DriverManager.getConnection(url);

7、PostgreSQL数据库 

Class.forName("org.postgresql.Driver").newInstance(); 
String url ="jdbcostgresql://localhost/myDB" //myDB为数据库名 
String user="myuser"; 
String password="mypassword"; 
Connection conn= DriverManager.getConnection(url,user,password);

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,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Java 数据库连接
JDBC连接复习
JDBC连接复习
40 1
|
6月前
|
Java 关系型数据库 数据库连接
实时计算 Flink版操作报错之在使用JDBC连接MySQL数据库时遇到报错,识别不到jdbc了,怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
SQL Java 数据库连接
JDBC的连接参数的设置导致rowid自动添加到sql
JDBC的连接参数的设置导致rowid自动添加到sql
52 1
|
3月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
34 7
|
3月前
|
SQL Java 数据库连接
JDBC连接SQL Server2008 完成增加、删除、查询、修改等基本信息基本格式及示例代码
这篇文章提供了使用JDBC连接SQL Server 2008数据库进行增加、删除、查询和修改操作的基本步骤和示例代码。
|
3月前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
3月前
|
Java 关系型数据库 MySQL
使用JDBC连接ADB
【8月更文挑战第6天】
146 0
|
4月前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库
|
5月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
【6月更文挑战第24天】Java JDBC的三大法宝简化数据库操作:①统一API接口,跨平台与各类数据库交互;②参数化查询,提升效率,防止SQL注入;③事务管理,确保数据一致性。通过这三个核心特性,开发者能更安全高效地处理数据库任务。示例代码展示了如何使用这些功能。
42 3
|
4月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
66 0