📄 abstractdealdatabaseinfo.java
字号:
package com.tanghan.db.logic;import com.tanghan.db.util.*;import com.tanghan.db.*;import java.util.List;import java.sql.Connection;import com.tanghan.util.PageList;import com.tanghan.util.Log;import com.tanghan.util.TanghanException;import org.apache.log4j.Logger;import java.sql.*;/** 得到数据库各种信息说需要的方法. * * @author Jerry Tang * @version v0.1.0 * @createdate 2003-3-25 * @copyright (C) 2003 Tanghan工作组 */public abstract class AbstractDealDatabaseInfo { /**存放继承了DealDatabaseInfo的所以实现类的资源文件*/ private static java.util.ResourceBundle resBundle = null; /**存放一个JDBC连接的信息*/ protected DBConnection dbConnection = null; protected static Logger log = Log.getInstanse().getLogger("db.deal"); /**数据库连接*/ protected Connection con = null; /**数据库连接的计数器*/ protected int connectedCount = 0; /** * Constructor for DealDatabaseInfo. */ protected AbstractDealDatabaseInfo() { } /** * 根据传入的数据得到一个DealDatabaseInfo的实例 * @param which 那个具体类用来生成DealDatabaseInfo的实例 * @return DealDatabaseInfo DealDatabaseInfo的实例 */ public static AbstractDealDatabaseInfo getInstance(String which){ loadResBundle(); AbstractDealDatabaseInfo obj = null; try{ obj = (AbstractDealDatabaseInfo)Class.forName(resBundle.getString(which).trim()).newInstance(); }catch(Exception e){ log.error(e.toString(),e);// Debug.dealException(e); } return obj; } /** * 根据传入的数据得到一个DealDatabaseInfo的实例 * @param which 那个具体类用来生成DealDatabaseInfo的实例 * @param conn DBConnection的一个实例 * @return DealDatabaseInfo DealDatabaseInfo的实例 */ public static AbstractDealDatabaseInfo getInstance(String which,DBConnection conn){ loadResBundle(); AbstractDealDatabaseInfo obj = null; try{ obj = (AbstractDealDatabaseInfo)Class.forName(resBundle.getString(which).trim()).newInstance(); obj.setDbConnection(conn); }catch(Exception e){ log.error(e.toString(),e); } return obj; } /** * 载入资源文件 */ private static void loadResBundle(){ if(resBundle==null){ resBundle = java.util.ResourceBundle.getBundle("com.tanghan.db.logic.DealDatabaseResource"); } } /** * 根据table名,得到这个表的所有属性,如果table为空,则该表不存在 * @param tableName 表名 * @return Table 该表的所有属性 */ public abstract Table getTableInfo(String tableName); /** * 得到在当前库中,所有表和视图的列表 * @return List 表和视图的列表 * @throws 列外 */ public abstract List getTableList() throws TanghanException; /** * 根据table名,得到这个表的所有字段 * @param tableName 表名 * @return List 表的所有字段 */ public abstract List getTableField(String tableName); /** * 根据表名和字段名,得到该表的这个字段的所有属性 * @param tableName 表名 * @param fieldName 字段名 * @return Field 字段 */ public abstract Field getTableFieldInfo(String tableName,String fieldName); /** * 根据表名,得到该表的数据, * @param tableName 表名 * @param pageList 每页显示的数据的多少 * @return String[][] 数据列表 */ public abstract String[][] getNotes(String tableName,PageList pageList); /** * 得到该数据库连接的Schema * @return String[] Schema列表 */ public abstract List getSchemas() throws TanghanException; /** * 执行SQL语句 * @return 执行SQL语句的结果 * @throws TanghanException */ public abstract SQLResult executeSQL(String sql) throws TanghanException; /** * 根据DBConnection得到一个连接 * @return Connection 一个连接, 可能为null */ protected Connection getConnection() throws TanghanException{ try { boolean check = false; if(con==null){ check =true; }else if(con.isClosed()){ check =true; } if(check){ Class.forName(this.dbConnection.getJdbcDriverClass()).newInstance(); con = DriverManager.getConnection( this.dbConnection.getDatabaseURL(), this.dbConnection.getUserName(), this.dbConnection.getPassword()); log.info("getConnection() complite successfully!"); connectedCount = 0; } } catch (Exception e) { throw new TanghanException(e); } connectedCount++; return con; } /** * 关闭连接 * @param conn 需要关闭的连接 */ protected void closeConnection(){ connectedCount--; if(connectedCount<1){ connectedCount = 0; try{ if(con!=null){ con.close(); } con = null; }catch(Exception e){ log.error(e.toString(),e); } } } /** * Returns the conn. * @return DBConnection */ public DBConnection getDbConnection() { return dbConnection; } /** * Sets the conn. * @param conn The conn to set */ public void setDbConnection(DBConnection conn) { this.dbConnection = conn; connectedCount = 0; closeConnection(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -