SQLTargetDB2.java 5.8 KB
package com.sitech.ismp.coll;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;

public class SQLTargetDB2 extends CollBase {
	String ObjectIP = null;

	String DBType = "DB2";

	String Drivers = "com.ibm.db2.jcc.DB2Driver";

	String ObjectIPPort = "50000";

	String SIDName = null;

	String user = null;

	String passwd = null;

	String cUrl = null;

	boolean state = false;

	public SQLTargetDB2() {
	}

	public SQLTargetDB2(String IP, String cUser, String cPasswd) {
		init(IP, "50000", cUser, cPasswd);
	}

	public SQLTargetDB2(String IP, int cPort, String cUser, String cPasswd) {
		init(IP, String.valueOf(cPort), cUser, cPasswd);
	}

	public SQLTargetDB2(String IP, String cPort, String cUser, String cPasswd) {
		init(IP, cPort, cUser, cPasswd);
	}

	public void init(String IP) {
		this.ObjectIP = IP;
		setDBIP(IP);
	}

	public void init(String IP, String cSID, String cUser, String cPasswd) {
		KPISet.clear();
		setDBIP(IP);
		setSIDName(cSID);
		setUser(cUser);
		setPasswd(cPasswd);
	}

	public void init(String IP, String cPort, String cSID, String cUser,
			String cPasswd) {
		KPISet.clear();
		setDBIP(IP);
		setPort(cPort);
		setSIDName(cSID);
		setUser(cUser);
		setPasswd(cPasswd);
	}

	public void init(String cUrl, String cUser, String cPasswd) {
		KPISet.clear();
		setUrl(cUrl);
		setUser(cUser);
		setPasswd(cPasswd);
	}

	public void setDBIP(String ObjectIP) {
		this.ObjectIP = ObjectIP;
	}

	public void setDrivers(String Drivers) {
		this.Drivers = Drivers;
	}

	public void setPort(String cPort) {
		this.ObjectIPPort = cPort;
	}

	public void setSIDName(String cSIDName) {
		this.SIDName = cSIDName;
	}

	public void setUser(String cUser) {
		this.user = cUser;
	}

	public void setPasswd(String cPasswd) {
		this.passwd = cPasswd;
	}

	public void setUrl(String cUrl) {
		this.cUrl = cUrl;
	}

	private static Connection dbConnection = null;

	public Connection getConnection() {
		String url = null;
		if (cUrl == null) {
			url = "jdbc:db2://" + ObjectIP + ":" + ObjectIPPort + "/" + SIDName;
			System.out.println("db2 connect url--" + url);
		} else
			url = cUrl;
		System.out.println("db2 conn--" + url);
		try {
			if (dbConnection == null || dbConnection.isClosed()) {
				System.out.println("now, connection is null ");
				Class.forName(Drivers);
				System.out.println("url:" + url);
				System.out.println("user:" + user);
				System.out.println("passwd:" + passwd);
				dbConnection = DriverManager.getConnection(url, user, passwd);
			}
			state = true;
		} catch (Exception e) {
			state = false;
			e.printStackTrace();
		}
		return dbConnection;
	}

	public void releaseResources() {
		try {
			if (dbConnection != null && !dbConnection.isClosed()) {
				dbConnection.close();
			}
		} catch (SQLException se) {
			se.printStackTrace();
		}
	}

	public Vector getKPISet(String sql) {
		Vector recordSet = new Vector();
		try {
			getConnection();
			PreparedStatement pstmt = null;
			ResultSet result = null;
			pstmt = dbConnection.prepareStatement(sql);
			boolean hasResult = pstmt.execute();
			if (hasResult) {
				result = pstmt.getResultSet();
				ResultSetMetaData rsmd = result.getMetaData();
				int iColumnCount = rsmd.getColumnCount();
				while (result.next()) {
					java.util.Vector vTemp = new Vector();
					for (int i = 0; i < iColumnCount; i++) {
						Object oTemp = result.getObject(i + 1);
						String sTemp = oTemp == null ? "" : oTemp.toString();
						vTemp.addElement(sTemp.trim());
					}
					recordSet.add(vTemp);
				}
			}
			pstmt.close();
			// dbConnection.commit();
		} catch (SQLException sqle) {
			System.out.println(sql);
			sqle.printStackTrace();
		} catch (Exception ae) {
			ae.printStackTrace();
		}
		return recordSet;
	}

	public boolean getState() {
		getConnection();
		try {
			if (!state) {
				System.out.println("--second--conn error----");
				java.lang.Thread.sleep(1000);// 等待1秒
				getConnection();
				if (!state) {
					System.out.println("--third--conn error----");
					java.lang.Thread.sleep(5000);// 等待5秒
					getConnection();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return state;
	}

	public String getSQLKPISetInfo(String sql) {
		if (sql == null || sql.equals(""))
			return "";
		Vector result = getKPISet(sql);
		String sTable = "";
		for (int i = 0; i < result.size(); i++) {
			Vector row = (Vector) result.elementAt(i);
			String sRow = "";
			for (int j = 0; j < row.size(); j++) {
				sRow = sRow + "," + row.elementAt(j);
			}
			sTable = sTable + "\n" + sRow;
		}
		return sTable;
		/*
		 * return result.toString();
		 */
	}

	public Vector getSQLKPISet(String sql) {
		return getSQLKPISet(sql, 0);
	}

	public Vector getSQLKPISet(String sql, int iPos) {
		if (sql == null || sql.equals(""))
			return null;
		Vector result = getKPISet(sql);
		Vector tmp_result = new Vector();
		for (int i = 0; i < result.size(); i++) {
			Vector record = (Vector) result.elementAt(i);
			String kpiinfo = (String) record.elementAt(iPos);
			tmp_result.add(kpiinfo);
		}
		return tmp_result;
	}

	public Vector getColumn(Vector recordSet, int col) {
		Vector ret = new Vector();

		for (int i = 0; i < recordSet.size(); i++) {
			ret.add(((Vector) recordSet.elementAt(i)).elementAt(col));
		}
		return ret;
	}

	public Vector getSQLKPIResult(String sql) {
		if (sql == null || sql.equals(""))
			return null;
		return getKPISet(sql);
	}

	public String getSQLKPIInfo(String sql) {
		if (sql == null || sql.equals(""))
			return "";
		String kpiinfo = "";
		Vector result = getKPISet(sql);

		if (result.size() > 0) {
			Vector record = (Vector) result.elementAt(0);
			kpiinfo = (String) record.elementAt(0);
		}
		System.out.println("kpiinfo=" + kpiinfo);
		return kpiinfo;
	}

	public void release() {
		releaseResources();
	}

}