📄 rundb.java
字号:
// 运行数据库类,用于单数据库
package com.neck;
import java.sql.*;
import java.sql.ResultSet;
import javax.sql.DataSource;
import javax.naming.NamingException;
import javax.naming.Context;
import javax.naming.InitialContext;
public class RunDB implements ExtendDB {
private Connection MasterConn = null;
private Statement MasterSt = null;
private boolean bMasterBad = false; // 确定主数据库是否可用标志 false--可用 true--不可用
private DataSource MasterDs = null;
private boolean bDouDB = false; // 单数据库
String m_strErrMsg;
public RunDB() {
// 取出主从数据库上下文标识(加载类的时候运行)
try {
Context initCtx = new InitialContext();
// Look up our data source
System.out.println("开始初始化数据库");
MasterDs = (DataSource)initCtx.lookup("java:comp/env/jdbc/mssql");
System.out.println("数据库初始化成功");
}
catch(NamingException ex) {
System.out.println("RunDB出错:" + ex.getMessage());
}
if (null != MasterDs)
{
bDouDB = true;
}
}
// 打开数据库连接,创建Statement
public void open() {
// 打开主数据库
if( MasterDs != null )
{
try {
MasterConn = MasterDs.getConnection();
//System.out.println("打开从数据库22222222222222!");
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
//System.out.println("打开从数据库333333!");
}
catch(Exception ex) {
System.out.println("打开数据库出错!");
System.err.println(ex.getMessage());
}
}
// 创建主Statement
if( MasterConn != null )
{
try {
MasterSt = MasterConn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//System.out.println("打开从数据库555555!");
}
catch(SQLException ex) {
System.out.println("创建Statement出错!");
System.err.println(ex.getMessage());
}
}
}
/****************************************************************
**Function: 运行查询操作 *
**InParam: strSQL--要运行的SQL语句 *
**OutParam: 查询产生的ResultSet *
**Author: Ysr *
**Date: 2004.3.10 *
*****************************************************************/
public ResultSet executeQuery(String strSQL) {
ResultSet pRs = null;
if( MasterSt == null )
{
m_strErrMsg = "executeQuery出错,Statement打开不成功!";
System.out.println(m_strErrMsg);
return null;
}
if( bMasterBad == true )
{
m_strErrMsg = "executeQuery出错,数据库不可用!";
System.out.println(m_strErrMsg);
return null;
}
if( MasterSt != null )
{
try{
pRs = MasterSt.executeQuery(strSQL);
}
catch(SQLException ex)
{
System.err.println(ex.getMessage());
}
}
return pRs;
}
/****************************************************************
**Function: 运行增、删、改操作 *
**InParam: strSQL--要运行的SQL语句 *
**OutParam: false--失败 true--成功 *
**Author: Ysr *
**Date: 2004.3.10 *
*****************************************************************/
public boolean executeUpdate(String strSQL) {
boolean bMasterRun = false; // 主数据库是否正常运行标志 false-失败 true-成功
if( MasterSt == null )
{
m_strErrMsg = "executeUpdate出错,Statement打开不成功!";
System.out.println(m_strErrMsg);
return false;
}
if( bMasterBad == true )
{
m_strErrMsg = "executeUpdate出错,数据库都不可用!";
System.out.println(m_strErrMsg);
return false;
}
// 主数据库运行SQL语句
if( MasterSt != null && bMasterBad == false )
{
try{
MasterSt.executeUpdate(strSQL);
bMasterRun=true;
}
catch(SQLException ex)
{
System.err.println("数据库运行出错!"+ex.getMessage());
}
}
if( bMasterRun == false )
return false;
return true;
}
/****************************************************************
**Function: 运行增、删、改操作,并进数据操作流水 *
**InParam: strSQL--要运行的SQL语句 *
**OutParam: false--失败 true--成功 *
**Author: Ysr *
**Date: 2004.3.10 *
*****************************************************************/
public boolean executeUpdate(String strSQL, String strOprTabName,
String strKeyVal, String strUserID) {
// TODO Auto-generated method stub
boolean bFlag = executeUpdate(strSQL);
if( true == bFlag )
{
// 进入数据库日志表
Timestamp ts = new Timestamp((new java.util.Date()).getTime());
String strRunSQL = strSQL.replaceAll("'", "''");
strRunSQL = strRunSQL.replaceAll("\"", "\"\"");
String strLogSQL = "INSERT INTO TabDBLog(UserID, OprTime, OprTabName," +
" KeyVal, RunSQL ) VALUES('" +
strUserID + "','" + ts.toString().substring(0,19) + "','" +
strOprTabName + "','" + strKeyVal + "','" + strRunSQL + "')";
executeUpdate(strLogSQL);
}
return bFlag;
}
/****************************************************************
**Function: 关闭数据库 *
**InParam: 无 *
**OutParam: 无 *
**Author: Ysr *
**Date: 2004.3.10 *
*****************************************************************/
public void close() {
if (MasterConn != null) {
try {
MasterConn.close();
}
catch (SQLException ignore) {}
finally {
MasterConn = null;
}
}
}
// 检查主数据库是否能打开
public boolean checkOpenMaster() {
// TODO Auto-generated method stub
if( null == MasterConn )
return false;
return true;
}
// 取双数据库标志
public boolean getDouDB() {
// TODO Auto-generated method stub
return bDouDB;
}
// 取主数据库出错标志
public boolean getMasterBad() {
// TODO Auto-generated method stub
return bMasterBad;
}
public String getErrMsg() {
// TODO Auto-generated method stub
return m_strErrMsg;
}
/*
private void autoRestartWeb()
{
System.out.println("starting autoRestartWeb......");
try{
Runtime.getRuntime().exec("net stop tomcat5");
}
catch(Exception ex)
{
System.out.println("autoRestartWeb Error!Msg="+ex.getMessage());
}
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -