Java JDBC連接數據庫

package cn.cqvie.yjq; import java.sql.*; /** * 注冊數據庫的驅動程序,並得到數據庫的連接對象 * @author yu * */ public class DBUtil { static String DriverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; static String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=book"; static String USER = "sa"; static String PASSWORD = "123"; //靜態代碼塊,只執行一次 static { try { Class.forName(DriverName); } catch (ClassNotFoundException e) { e.printStackTrace(); } } //得到連接對象 public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(URL,USER,PASSWORD); } catch (SQLException e) { e.printStackTrace(); } return conn; } //關閉連接 public static void free(ResultSet rs,Statement stmt, Connection conn) { if(rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if(stmt != null) { try { stmt.close(); } catch (Exception e2) { e2.printStackTrace(); } finally { if(conn != null) { try { conn.close(); } catch (Exception e3) { e3.printStackTrace(); } } } } } } /* if(stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } finally { if(stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } } } if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } */ } }
使用JDBC實現增刪改查的功能

package cn.cqvie.yjq; import java.sql.*; import java.util.*; public class SQLHelper { /** * 根據Connection,帶坑語句,所有坑的值params來生成一個具體的PreparedStatement語句 * @param conn * @param cmdText * @param params * @return * @throws SQLException */ public static PreparedStatement getPreparedStatement(Connection conn,String cmdText,Object... params) { if(conn == null) { return null; } PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(cmdText); int i = 1; if(params != null) { for(Object obj:params) { if(obj != null) { pstmt.setObject(i, obj); } i ++; } } //DBUtil.free(null, null, conn); return pstmt; } catch (SQLException e) { e.printStackTrace(); DBUtil.free(null, pstmt, conn); } return null; } /** * 查詢一個結果集 * @param conn * @param cmdText * @param params * @return * @throws SQLException */ public static List<Object[]> executeQuery(Connection conn,String cmdText,Object...params) { PreparedStatement pstmt = getPreparedStatement(conn, cmdText, params); ResultSet rs = null; List<Object[]> list = new ArrayList<Object[]>(); try { rs = pstmt.executeQuery(); //從rs中獲取每一個行數據的列的個數 ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); //定義一個保存每一行的各個列的值的容器,Object[] Object[] objects = null; while(rs.next()) { objects = new Object[columnCount]; for(int i = 0;i < columnCount;i ++) { objects[i] = rs.getObject(i + 1); } list.add(objects); } } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.free(rs, pstmt, conn); } return list; } /** * 查詢一個具體的值 * @param conn * @param cmdText * @param params * @return * @throws SQLException */ public static Object executeScalar(Connection conn,String cmdText,Object...params) { Object obj = null; if(conn == null) { return null; } List<Object[]> list = executeQuery(conn, cmdText, params); if(list != null && list.size() != 0) { obj = list.get(0)[0]; return obj; } return null; } /** * 增刪改方法 * @param conn * @param cmdText * @param params * @return * @throws SQLException */ public static int executeUpdate(Connection conn,String cmdText,Object...params) { if(conn == null) { return -2; } PreparedStatement pstmt = getPreparedStatement(conn, cmdText, params); int rows = 0; try { rows = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DBUtil.free(null, pstmt, conn); } return rows; } }