package bce.server.daosupport.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * JDBC数据库操作抽象类,继承这个类并实现getConnection方法可以用于不同的数据库 * 比如MySQL,SQL Server或Oracle,调用数据库操作时使用本类的引用 * 而不是其子类的引用,可以最大程度上实现不同数据库间的通用性 * * @author Yingquan Yuan */ public abstract class DB { /** * 数据库IP地址 */ protected String dbIp; /** * 数据库名 */ protected String dbName; /** * 数据库用户名 */ protected String dbUsername; /** * 数据库用户密码 */ protected String dbUserPwd; /** * 数据库端口 */ protected int dbPort; /** * 取得数据库连接<br> * 根据不同的数据库,有不同的方法取得连接<br> * 子类必须实现这个方法以取得数据库连接 * @return 数据库连接的Connection对象 * @throws SQLException 连接失败时(比如密码认证失败)会抛出该异常 */ public abstract Connection getConnection() throws SQLException; /** * 关闭连接 * @param conn 要关闭的连接 * @throws SQLException 抛出SQL异常,比如连接意外终止 */ public void close(Connection conn) throws SQLException { if(conn != null) { conn.close(); conn = null; } } /** * 关闭结果集 * @param rs 要关闭的结果集 * @throws SQLException 抛出SQL异常,比如连接意外终止 */ public void close(ResultSet rs) throws SQLException { if(rs != null) { rs.close(); rs = null; } } /** * 关闭Statement * @param stmt 要关闭的Statement * @throws SQLException 抛出SQL异常,比如连接意外终止 */ public void close(Statement stmt) throws SQLException { if(stmt != null) { stmt.close(); stmt = null; } } public void setDbIp(String dbIp) { this.dbIp = dbIp; } public void setDbName(String dbName) { this.dbName = dbName; } public void setDbUsername(String dbUsername) { this.dbUsername = dbUsername; } public void setDbUserPwd(String dbUserPwd) { this.dbUserPwd = dbUserPwd; } public void setDbPort(int dbPort) { this.dbPort = dbPort; } }