📄 dbsqlmanager.java
字号:
package com.blue.web.common.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import com.blue.web.common.exceptions.DAOSysException;
import com.blue.web.common.util.AppKeys;
import com.blue.web.common.util.AppLogger;
import com.blue.web.common.util.AppSettings;
/**
* DBManager MSSQL实例
* @author Lucifer
*
*/
public class DBSqlManager implements DBManager {
protected static final String MIN_DATE = "0001-01-01T00:00:00";
protected static final String MAX_DATE = "9999-12-31T23:59:59";
protected DataSource _datasource = null;
/**
* Default constructor
* @throws SQLException
*/
public DBSqlManager() throws DAOSysException {
try {
InitialContext ic = new InitialContext();
AppSettings config = AppSettings.getInstance();
if (config.getProperty(AppKeys.APP_SERVER) != null
&& config.getProperty(AppKeys.APP_SERVER).equalsIgnoreCase("jboss")) {
_datasource = (DataSource) ic.lookup("java:/" + config.getProperty(AppKeys.DB_DATA_SOURCE));
} else {
Context envCtx = (Context)ic.lookup("java:/comp/env");
_datasource = (DataSource) envCtx.lookup(config.getProperty(AppKeys.DB_DATA_SOURCE));
}
// 将异常统统吃掉,将采用getDebugDBConnection()来连接数据库
} catch (NamingException e) {
// throw new SQLException("\nError in initialize database : " + e.getMessage() + "\n");
} catch (Exception e) {
throw new DAOSysException("General exception : " + e.getMessage() + "\n");
}
}
/**
* 关闭数据库连接
*/
public void closeConnection(Connection conn) throws DAOSysException {
try {
if (conn != null && !conn.isClosed()) {
conn.close();
}
} catch (SQLException e) {
throw new DAOSysException(e.getMessage());
}
}
/**
*
* @param rst
* @throws SQLException
*/
public void closeResultSet(ResultSet rst) throws DAOSysException {
try {
if (rst != null)
rst.close();
} catch (SQLException e) {
throw new DAOSysException(e.getMessage());
}
}
/**
*
* @param stat
* @throws SQLException
*/
public void closeStatement(PreparedStatement stat) throws DAOSysException {
try {
if (stat != null)
stat.close();
} catch (SQLException e) {
throw new DAOSysException(e.getMessage());
}
}
/**
* 获取数据库连接(采用数据源)
* @return
* @throws SQLException
*/
public Connection getDBConnection() throws DAOSysException {
try {
return _datasource.getConnection();
} catch (Exception e) {
AppLogger.warn("can not get db datasource, try to use debug connection.");
try {
return getDebugDBConnection();
} catch (Exception e1) {
AppLogger.fatal("failure to get db connection.");
throw new DAOSysException(e1.getMessage());
}
}
}
/**
* 获取备用数据库连接(采用连接字符串)
* @return
* @throws SQLException
*/
private Connection getDebugDBConnection() throws DAOSysException {
Connection conn = null;
String url = AppSettings.getInstance().getProperty(AppKeys.DB_URL);
String user = AppSettings.getInstance().getProperty(AppKeys.DB_USER);
String password = AppSettings.getInstance().getProperty(AppKeys.DB_PASSWORD);
try {
// 微软的SQL Server JDBC驱动有BUG, 获取Column只能从左至右.
// Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -