Oracle数据库操作接口

这是一个用于Oracle数据库操作的Java工具类,包含了建立连接、执行SQL查询、获取表头信息、关闭连接等方法。通过此类可以方便地进行数据库的CRUD操作。
摘要由CSDN通过智能技术生成
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.eclipse.core.runtime.IProgressMonitor;

import com.wer.factories.PrintFactory;

/**
 * ORACLE数据库操作工具类
 * 
 */
public class OracleHandler {

	private String ipAddr = "127.0.0.1";
	private String port = "1521";
	private String usrname = "sa";
	private String password = "sa";
	private String sid = "sss";

	private int StartColIndex = 1; // 1 为起始索引号

	private Connection conn = null;
	private Statement state = null;

	public OracleHandler() {
		// initial
	}

	public OracleHandler(String ipAddr, String port, String usrname,
			String password, String sid) {
		this.ipAddr = ipAddr;
		this.port = port;
		this.usrname = usrname;
		this.password = password;
		this.sid = sid;
	}

	public OracleHandler(String ipAddr, String usrname, String password,
			String sid) {
		this.ipAddr = ipAddr;
		this.usrname = usrname;
		this.password = password;
		this.sid = sid;

		getConn();
	}

	/**
	 * DB连接,保存连接实例至全局变量
	 * 
	 * @throws InstantiationException
	 * @throws IllegalAccessException
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 */
	private void getConn() {
		String dbUrl = "jdbc:oracle:thin:@" + ipAddr + ":1521:" + sid;
		String theUser = usrname;
		String thePw = password;
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
			conn = DriverManager.getConnection(dbUrl, theUser, thePw);
			state = conn.createStatement();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			PrintFactory.getInstance().err(e.getMessage());
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			PrintFactory.getInstance().err(e.getMessage());
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			PrintFactory.getInstance().err(e.getMessage());
		}
	}

	/**
	 * 关闭数据库连接
	 * 
	 * @throws SQLException
	 */
	public void close() {
		if (state != null)
			try {
				state.close();
				state = null;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				PrintFactory.getInstance().err(e.getMessage());
			}
		if (conn != null)
			try {
				conn.close();
				conn = null;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				PrintFactory.getInstance().err(e.getMessage());
			}
	}

	/**
	 * 是否已连接
	 * 
	 * @return
	 */
	public boolean isConnected() {
		if (state != null && conn != null)
			return true;
		else
			return false;
	}

	/**
	 * 从DB中获取表列名
	 */
	public String[] getColumnFrmDB(String tblname) {
		ResultSet rs = null;
		String[] rst;

		if (isConnected()) {
			try {
				String headSql = "select * from " + tblname;

				// ArrayList IBSCONFIG = executeQuery(headSql);
				rs = state.executeQuery(headSql);
				ResultSetMetaData rsmd = rs.getMetaData();

				int size = rsmd.getColumnCount();

				rst = new String[size];

				for (int i = 0; i < size; i++) {
					System.out.print(rsmd.getColumnName(i + StartColIndex)
							+ " ");
					rst[i] = rsmd.getColumnName(i + StartColIndex);
				}
				return rst;
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				PrintFactory.getInstance().err(e.getMessage());
			}
		}

		if (rs != null)
			try {
				rs.close();
			} catch (SQLException e) {
				PrintFactory.getInstance().err(e.getMessage());
			}

		return null;
	}

	/** 获取查询SQL语句的返回表头数组 **/
	public String[] QueryForHeads(String Sql) {
		ResultSet rs = null;
		String[] rst;

		if (isConnected()) {
			try {
				rs = state.executeQuery(Sql);
				ResultSetMetaData rsmd = rs.getMetaData();

				int size = rsmd.getColumnCount();

				rst = new String[size + 1];
				rst[0] = "序号";

				for (int i = 0; i < size; i++) {
					System.out.print(rsmd.getColumnName(i + StartColIndex)
							+ " ");
					rst[i + 1] = rsmd.getCo
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值