先看这篇记录
java连接3种数据库 JdbcLinkDB 测试 --201801 配置文件放在jar外面 读取,遇到的问题 - 海蓝steven - 博客园
https://www.cnblogs.com/rogge7/p/8269842.html
//-------------------------------
需求:
1、同时测试 mssql,mysql,oracle 三种数据库
2、jar包的形式,配置文件在jar包外面,随时修改
需要找到连接这三个数据库的驱动jar包,添加到项目中
过程:
刚开始不小心打包成jar包 运行jar 提示以下异常:
改成:把项目打包成 Runnable jar,选择主函数入口
运行成功,文件结构如下,考过去使用,Jdk1.8.0_102
一些文件:
start.bat 文件
java -version java -jar JdbcLinkDB.jar pause
jdbcCon.properties文件
# connect oracle #driver = oracle.jdbc.driver.OracleDriver #url = jdbc:oracle:thin:@localhost:1521:orcl #username = system #password = 123333 # connect mssql #driver = com.microsoft.sqlserver.jdbc.SQLServerDriver #url = jdbc:sqlserver://127.0.0.1:1433;DatabaseName=GpsDB #username = sa #password = 123456 # connect mysql driver = com.mysql.jdbc.Driver url = jdbc:mysql://121.12.249.239:14015/fsjxbdb1 username = fsjxbadmin password = fsjxbadmin!23
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.chanbo.yy; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; /** * @author * */ public class ConnectionFactory { /** * 数据库连接类 */ //数据库驱动程序类名 private static String DRIVER = ""; //连接数据库的URL private static String URL = ""; //连接数据库的用户名 private static String USERNAME = ""; //连接数据库的密码 private static String PASSWORD = ""; private ConnectionFactory(){ } static{ getPropertiesInfo(); } /** * 该方法用来获得属性文件中的driver、url、username、password */ private static void getPropertiesInfo(){ Properties prop = new Properties(); // InputStream inStream = Thread.currentThread().getContextClassLoader() // .getResourceAsStream("jdbcCon.properties"); // InputStream inStream = this.getClass().getResourceAsStream("/jdbcCon.properties"); //FileInputStream aa ; try{ //获得相应的键值对 // prop.load(inStream); prop.load(new FileInputStream("jdbcCon.properties")); // prop.load(aa); }catch(IOException e){ e.printStackTrace(); } //根据相应的键获得对应的值 DRIVER = prop.getProperty("driver"); URL = prop.getProperty("url"); USERNAME = prop.getProperty("username"); PASSWORD = prop.getProperty("password"); } /** * 该方法用来加载驱动,并获得数据库的连接对象 * * @return 数据库连接对象conn */ public static Connection getConnnection(){ Connection conn = null; try{ //加载数据库驱动程序 Class.forName(DRIVER); }catch(ClassNotFoundException e){ e.printStackTrace(); } try{ System.out.println("-- 连接URL : "+URL); //获得数据库连接对象 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); System.out.println("-- 连接成功"); }catch(SQLException e){ System.out.println("-- 连接失败"); e.printStackTrace(); } return conn; } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
/** * */ package com.chanbo.yy; import java.sql.Connection; import java.util.Scanner; /** * @author yanfazhongxin * */ public class LinkOracleTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Connection conn = ConnectionFactory.getConnnection(); DbClose.close(conn); Scanner scan = new Scanner(System.in); String read = scan.nextLine(); } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.chanbo.yy; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * @author * */ public class DbClose { /** * 数据库关闭类 */ /** * 关闭数据库连接 * @param conn 连接类对象 */ public static void close(Connection conn){ if(null != conn){ try{ conn.close(); }catch(SQLException e){ e.printStackTrace(); } } } /** * 关闭数据库语句 * @param stmt 语句对象 */ public static void close(PreparedStatement pre){ if(null != pre){ try{ pre.close(); }catch(SQLException e){ e.printStackTrace(); } } } /** *关闭数据库结果集 * @param rs 结果集对象 */ public static void close(ResultSet rs){ if(null != rs){ try{ rs.close(); }catch(SQLException e){ e.printStackTrace(); } } } public static void close(ResultSet rs,PreparedStatement pre,Connection conn){ close(rs); close(pre,conn); } public static void close(PreparedStatement pre,Connection conn){ close(pre); close(conn); System.out.println("数据库已关闭!"); } }