2007年10月12日 08:57:28
通用的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() ; --------------- SqlServer2005数据库JDBC驱动 下载:http://download.microsoft.com/download/d/2/e/d2e1ffb6-2cfa-4a62-a22d-a413cce93118/Download_SQL_JDBC_Driver.htm 安装或者解压,取得sqljdbc.jar文件,该文件即为JDBC驱动。将sqljdbc.jar放到classpath。 |
一共有 0 条评论