通用的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() ;
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,如需转载请自行联系原作者