package com.xxl.job.core.util;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.*;
import java.util.*;
import java.util.Date;
/**
* @author WANGCHAO
* @ClassName Conn
* @Description : TODO 动态加载ojdbc文件链接数据库操作类
* @date 2020/7/8 18:15
*/
public class DynamicLoadingConn {
private static Connection getConnection(String ip , String port ,String dbName,String userName ,String passWord) {
File jdbcDriverJarFileLocation = new File("/opt/datacooridate/project/web/ojdbc/ojdbc6.jar");
//File jdbcDriverJarFileLocation = new File("E:\\Package\\maven\\jdk\\ojdbc6.jar");
Connection conn = null;
try {
//ORACLE的JDBC驱动类
String dbUrl = "jdbc:oracle:thin:@"+ip+":"+port+":"+dbName;
String driver = "oracle.jdbc.driver.OracleDriver";
try {
URL jdbcDriverURL = jdbcDriverJarFileLocation.toURL();
URL[] urls = new URL[1];
urls[0] = jdbcDriverURL;
URLClassLoader urlclassLoader = new URLClassLoader(urls, ClassLoader.getSystemClassLoader());
try {
Driver driverd = (Driver) urlclassLoader.loadClass(driver).newInstance();
Properties props = new Properties();
props.setProperty("user", userName);
props.setProperty("password", passWord);
try {
conn = driverd.connect(dbUrl, props);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return conn;
}
private static Statement getStatement(Connection conn){
Statement statement = null;
try {
statement = conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
return statement;
}
//度曲配置文件。
private static ResultSet executeQuery(Statement statement ,String sql) {
ResultSet rs = null;
try {
rs = statement.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
private static void close(Connection conn,Statement statement,ResultSet rs) {
try {
if(rs != null){
rs.close();
}
if(statement != null){
statement.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static List<Map<String, Object>> getDataMap(String ip, String port, String dbName, String userName, String passWord, String sql) {
Connection conn =null;
Statement st =null;
ResultSet rs =null;
List<Map<String, Object>> result = null;
try {
conn = getConnection(ip,port,dbName,userName,passWord);
st = getStatement(conn);
System.out.println("连接成功");
rs = executeQuery(st,sql);
result = parseResultSetToMapList(rs);
} catch (Exception e) {
System.out.println("查询报错===========IP:" +ip+";SQL:"+ sql);
e.printStackTrace();
} finally {
close(conn,st,rs);
}
return result;
}
/**
* 将一个未处理的ResultSet解析为Map列表.
*
* @param rs
* @return
*/
public static List<Map<String, Object>> parseResultSetToMapList(ResultSet rs) {
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
if (null == rs) {
return null;
}
try {
while (rs.next()) {
Map<String, Object> map = parseResultSetToMap(rs);
if (null != map) {
result.add(map);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public static Connection getDynamicConnection(String ip , String port ,String dbName,String userName ,String passWord) {
Connection conn = getConnection(ip,port,dbName,userName,passWord);
return conn;
}
public static Date getMaxDateBySql(String ip, String port, String dbname, String username, String password, String sql) {
// 去除首尾空格
Date date = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = getConnection(ip,port,dbname, username, password);
st = getStatement(conn);
rs = executeQuery(st,sql);
if (rs.next()) {
date = rs.getTimestamp(1);
}
} catch (Exception e) {
System.out.println("查询报错===========:" + sql);
e.printStackTrace();
} finally {
close(conn,st,rs);
}
return date;
}
public static int getCountIntBySql(String ip, String port, String dbname, String username, String password, String sql) {
int count = -1;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = getConnection(ip,port,dbname, username, password);
st = getStatement(conn);
rs = executeQuery(st,sql);
if (rs.next()) {
count = rs.getInt(1);
}
} catch (Exception e) {
System.out.println("查询报错===========:" + sql);
e.printStackTrace();
} finally {
close(conn,st,rs);
return count;
}
}
public static long getCountBySql(String ip, String port, String dbname, String username, String password, String sql) {
long count = -1;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = getConnection(ip,port,dbname, username, password);
st = getStatement(conn);
rs = executeQuery(st,sql);
if (rs.next()) {
count = rs.getLong(1);
}
} catch (Exception e) {
System.out.println("查询报错===========:" + sql);
e.printStackTrace();
} finally {
close(conn,st,rs);
}
return count;
}
/**
* 解析ResultSet的单条记录,不进行 ResultSet 的next移动处理
*
* @param rs
* @return
*/
public static Map<String, Object> parseResultSetToMap(ResultSet rs) {
if (null == rs) {
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
try {
ResultSetMetaData meta = rs.getMetaData();
int colNum = meta.getColumnCount();
for (int i = 1; i <= colNum; i++) {
// 列名(将列名转成小写,避免其他地方调用的时候,因为命名规则导致取不到值)
String name = meta.getColumnLabel(i).toLowerCase(); // i+1
Object value = rs.getObject(i);
// 加入属性
map.put(name, value);
}
} catch (SQLException e) {
e.printStackTrace();
}
return map;
}
public static boolean isConnection(String ip ,String port ,String dbname ,String username ,String password) {
try{
Connection conn = getConnection(ip,port,dbname,username,password);
if(conn!=null) {
try {
conn.close();
conn = null;
return true;
} catch (SQLException e) {
return false;
}
}else{
return false;
}
}catch (Exception e){
return false;
}
}
}
oracle 动态加载ojdbc文件
最新推荐文章于 2023-04-27 12:46:32 发布