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

📄 derbydbenginery.java

📁 DBExplorer 强烈推荐的一个JAVA项目 数据导出功能 支持的格式HTML PDF XLS等 支持的数据库有MYSQL ORACLE MSSQLSERVER等
💻 JAVA
字号:
package cn.com.qimingx.mydb;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.derby.drda.NetworkServerControl;

/**
 * @author Wangwei
 * 
 *         借助Derby提供一个轻量级数据库支持
 */
public class DerbyDBEnginery {
	// 日志访问器
	private static transient Log log = LogFactory.getLog(DerbyDBEnginery.class);

	//
	public static void main(String[] args) {
		File dbhome = new File("c:/temp/derbyDB");
		DerbyDBEnginery derby = new DerbyDBEnginery(dbhome);
		derby.startup();
		if (derby.isStarted(3)) {
			log.info("DerbyDBEnginery Startup~,Please input 'Exit' Shutdown.");
			InputStreamReader in = new InputStreamReader(System.in);
			BufferedReader reader = new BufferedReader(in);
			while (true) {
				try {
					String cmd = reader.readLine();
					if (cmd.equalsIgnoreCase("exit")) {
						derby.shutdown();
						break;
					} else {
						log.info("bad command~,Please again input~:");
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

	/**
	 * 默认构造器
	 */
	public DerbyDBEnginery(File dbhome) {
		this("127.0.0.1", 1527, dbhome);
	}

	/**
	 * 构造器
	 */
	public DerbyDBEnginery(String host, int port, File dbhome) {
		this.port = port;
		this.host = host;
		if (host == null || host.length() == 0) {
			this.host = "127.0.0.1";
		}

		this.dbhome = dbhome;
		if (dbhome == null) {
			this.dbhome = new File("databases");
		}
		if (!this.dbhome.exists()) {
			this.dbhome.mkdirs();
		}

		// 设置数据库服务器HOME
		String path = dbhome.getAbsolutePath();
		System.setProperty("derby.system.home", path);

		log.debug("DerbyDBEnginery 初始完成:[host=" + host + ";port=" + port
				+ ";home=" + path + "]");
	}

	/**
	 * 启动数据库Server.
	 */
	public void startup() {
		try {
			InetAddress iAddr = InetAddress.getByName(host);
			server = new NetworkServerControl(iAddr, port);
			server.start(dblog);
			if (isStarted(3)) {
				log.info("数据库服务启动成功~!");
			} else {
				log.warn("数据库服务启动失败~!");
			}
		} catch (Exception e) {
			log.error("启动数据库时发生错误:");
		}

	}

	/**
	 * 关闭数据库Server
	 */
	public void shutdown() {
		if (server == null) {
			log.warn("数据库服务器尚未启动.");
			return;
		}

		try {
			server.shutdown();
			log.info("成功关闭数据库服务器");
		} catch (Exception e) {
			log.error("关闭数据库服务器出错:", e);
		}
	}

	/**
	 * 检查服务器是否已启动..
	 */
	public boolean isStarted(int retrys) {
		for (int i = 1; i <= retrys; i++) {
			try {
				Thread.sleep(500);
				server.ping();
				return true;
			} catch (Exception e) {
				if (i == retrys) {
					return false;
				}
			}
		}
		return false;
	}

	/**
	 * 服务监听主机
	 */
	private String host;

	/**
	 * 服务监听端口
	 */
	private int port;

	/**
	 * 数据库主目录.
	 */
	private File dbhome;

	/**
	 * 数据库日志输出..
	 */
	private PrintWriter dblog;

	/**
	 * 数据库服务器控制器
	 */
	private NetworkServerControl server = null;

	public final String getHost() {
		return host;
	}

	public final void setHost(String host) {
		this.host = host;
	}

	public final int getPort() {
		return port;
	}

	public final void setPort(int port) {
		this.port = port;
	}

	public final File getDbhome() {
		return dbhome;
	}

	public final void setDbhome(File dbhome) {
		this.dbhome = dbhome;
	}

	public final PrintWriter getDblog() {
		return dblog;
	}

	public final void setDblog(PrintWriter dblog) {
		this.dblog = dblog;
	}
}

⌨️ 快捷键说明

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