All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.wicp.tams.commons.apiext.JdbcUtil Maven / Gradle / Ivy

There is a newer version: 2.3.4
Show newest version
package net.wicp.tams.commons.apiext;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

import org.apache.commons.lang.ArrayUtils;

import lombok.extern.slf4j.Slf4j;

/***
 * jdbc工具类,纯jdbc没有连接池
 * 
 * @author zhoujunhui
 *
 */
@Slf4j
public abstract class JdbcUtil {

	public static Connection getConnection(String driverName, String dburl, String userName, String pwd) {
		Connection conn = null;
		try {
			Class.forName(driverName);
			if (StringUtil.isNull(userName) || StringUtil.isNull(pwd)) {
				conn = DriverManager.getConnection(dburl);
			} else {
				conn = DriverManager.getConnection(dburl, userName, pwd);
			}
			return conn;
		} catch (Exception e) {
			log.error(String.format("连接错误,地址[%s]", dburl), e);
		}
		return null;
	}

	public static Connection getConnection(String driverName, String dburl) {
		return getConnection(driverName, dburl, null, null);
	}

	public static ResultSet querySql(Connection conn, String sql) {
		Statement stmt = null;
		try {
			if (conn == null || conn.isClosed()) {
				return null;
			}
			stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			return rs;
		} catch (SQLException e) {
			log.error(String.format("查询sql出错,sql:[%s]", sql), e);
		}
		return null;
	}

	/***
	 * 设置PreparedStatement的参数
	 * 
	 * @param stmt
	 *            要设置参数的PreparedStatement
	 * @param queryParams
	 *            要设置的参数,与stmt出现的问题要对应的上
	 * @throws SQLException
	 */
	public static void setPreParam(PreparedStatement stmt, Object... queryParams) throws SQLException {
		if (stmt == null) {
			return;
		}
		int needparamscount = stmt.getParameterMetaData().getParameterCount();
		if (needparamscount == 0 && ArrayUtils.isEmpty(queryParams)) {
			return;
		}
		if (needparamscount != queryParams.length) {
			throw new SQLException(
					String.format("参数的个数不匹配,需要[%s]个参数,但传进来[%s]个参数", needparamscount, queryParams.length));
		}
		for (int i = 0; i < queryParams.length; i++) {
			Object queryParam = queryParams[i];
			String valueStr = String.valueOf(queryParam);
			if (queryParam instanceof String) {
				stmt.setString(i + 1, valueStr);
			} else if (queryParam instanceof Integer) {
				stmt.setInt(i + 1, Integer.parseInt(valueStr));
			} else if (queryParam instanceof Date) {
				stmt.setDate(i + 1, new java.sql.Date(((Date) queryParam).getTime()));
			} else if (queryParam instanceof Long) {
				stmt.setLong(i + 1, Long.parseLong(valueStr));
			} else if (queryParam instanceof Boolean) {
				stmt.setBoolean(i + 1, Boolean.parseBoolean(valueStr));
			} else {
				throw new SQLException(String.format("不支持的类型,参数值[%s]", valueStr));
			}
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy