⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 abstractoperation.java

📁 关于网络聊天的希望
💻 JAVA
字号:
package console;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * @author Allan(刘新福)
 * @version 1.0
 */
public abstract class AbstractOperation implements Operation {

	protected String serverIP;

	protected String serverPort;

	protected String databaseName;

	protected String userName;

	protected String password;

	protected int isolation;

	public AbstractOperation(String serverIP, String serverPort,
			String databaseName, String userName, String password) {
		this(serverIP, serverPort, databaseName, userName, password,
				DEFAULT_TRANSACTION_ISOLATION);
	}

	public AbstractOperation(String serverIP, String serverPort,
			String databaseName, String userName, String password, int isolation) {
		this.serverIP = serverIP;
		this.serverPort = serverPort;
		this.databaseName = databaseName;
		this.userName = userName;
		this.password = password;
		this.isolation = isolation;
		init();
	}

	protected void init() {
		try {
			getConnection().setTransactionIsolation(isolation);
			getConnection().setAutoCommit(false);
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage());
		}
	}

	@Override
	public void execute(String sql) throws Exception {
		Statement st = null;
		ResultSet rs = null;
		try {
			st = getConnection().createStatement();
			boolean isQuery = st.execute(sql);
			if (isQuery) {
				rs = st.getResultSet();
				handleQueryResult(rs);
			} else {
				handleUpdateResult(st);
			}
		} catch (Exception e) {
			throw e;
		} finally {
			if (rs != null) {
				try {
					rs.close();
				} catch (SQLException e) {
				}
			}

			if (st != null) {
				try {
					st.close();
				} catch (SQLException e) {
				}
			}
		}

	}

	@Override
	public void handleUpdateResult(Statement st) throws Exception {
		int rowCount = st.getUpdateCount();
		if (rowCount >= 0) {
			System.out.println(rowCount + " row(s) affected.");
		}
	}

	@Override
	public void handleQueryResult(ResultSet rs) throws Exception {
		ResultSetMetaData rsmd = rs.getMetaData();
		int index = 1;

		while (rs.next()) {
			index++;

			for (int i = 1; i <= rsmd.getColumnCount(); i++) {
				String colName = rsmd.getColumnLabel(i);
				String colValue = rs.getString(colName);
				if (i != 1) {
					System.out.print(" , ");
				}
				System.out.print(colName + "=" + colValue);
			}
			System.out.println();
		}

		System.out.println((index - 1) + " Record(s) Found.");
	}

	@Override
	public void release() {
		try {
			getConnection().close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	public String getTransactionIsolation() {
		String isolationString;
		switch (isolation) {
		case 1:
			isolationString = "READ_UNCOMMITTED";
			break;
		case 2:
			isolationString = "READ_COMMITTED";
			break;
		case 4:
			isolationString = "REPEATABLE READ";
			break;
		case 8:
			isolationString = "SERIALIZABLE";
			break;
		default:
			isolationString = "UNKNOWN";
			break;
		}
		return isolationString;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -