import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import com.mysql.jdbc.PreparedStatement; import com.mysql.jdbc.ResultSet; import com.mysql.jdbc.Statement; public class DB { /** * 获取与数据库的拦截 * @return数据库的连接 */ public static Connection getConn() { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver");//通过class。forname加载数据库驱动,此处加载mysql驱动 // Class.forName("org.gjt.mm.mysql.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=weiwei");//使用java。sql包下的drivermanager类打开数据库连接 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 如果应用程序中的多次执行都要用到同一条sql语句,将使应用程序的效率明显降低,这时可以使用preparedStatement对象来解决。 * 此对象第一次执行的时候将sql语句传给数据库预编译,从而在以后美意执行这个sql语句时速度都能得到很大的提高。 * @param conn 建立的连接 * @param sql 要执行的sql语句 * @return */ public static PreparedStatement prepare(Connection conn, String sql) { PreparedStatement pstmt = null; try { if(conn != null) { pstmt = (PreparedStatement) conn.prepareStatement(sql); } } catch (SQLException e) { e.printStackTrace(); } return pstmt; } public static PreparedStatement prepare(Connection conn, String sql, int autoGenereatedKeys) { PreparedStatement pstmt = null; try { if(conn != null) { pstmt = (PreparedStatement) conn.prepareStatement(sql, autoGenereatedKeys); } } catch (SQLException e) { e.printStackTrace(); } return pstmt; } /** * 返回一个数据库连接声明 * @param conn 已经建立的连接 * @return */ public static Statement getStatement(Connection conn) { Statement stmt = null; try { if(conn != null) { stmt = (Statement) conn.createStatement(); } } catch (SQLException e) { e.printStackTrace(); } return stmt; } /** * 从建立的连接获取数据库连接声明,从这个声明进行数据库的查询 * @param conn 已经建立的连接 * @param sql sql语句 * @return 查询结果 */ public static ResultSet getResultSet(Connection conn, String sql) { Statement stmt = getStatement(conn); ResultSet rs = getResultSet(stmt, sql); close(stmt); return rs; } /** * 通过数据库声明进行数据库的查询 * @param stmt 数据库连接的声明 * @param sql 要执行的sql语句 * @return 查询结果 */ public static ResultSet getResultSet(Statement stmt, String sql) { ResultSet rs = null; try { if(stmt != null) { rs = (ResultSet) stmt.executeQuery(sql); } } catch (SQLException e) { e.printStackTrace(); } return rs; } public static void executeUpdate(Statement stmt, String sql) { try { if(stmt != null) { stmt.executeUpdate(sql); } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭数据库连接 * @param conn 当前存在的数据库连接 */ public static void close(Connection conn) { try { if(conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭数据库声明 * @param stmt 存在的数据库连接声明 */ public static void close(Statement stmt) { try { if(stmt != null) { stmt.close(); stmt = null; } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭当前的数据库查询结果 * @param rs 数据库查询结果对象 */ public static void close(ResultSet rs) { try { if(rs != null) { rs.close(); rs = null; } } catch (SQLException e) { e.printStackTrace(); } } public static void main(String[]args) throws SQLException { Statement stmt = getStatement(getConn()); String sql = "select * from test"; ResultSet rs = getResultSet(stmt,sql); while(rs!=null&&rs.next()) { System.out.println(rs.getString(2)); System.out.println("the current row number:" + rs.getRow()); } System.out.println("the current row number:" + rs.getRow()); } }