原生JDBCUtils工具類封裝程式碼實現
阿新 • • 發佈:2018-12-30
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /* * 建立JDBC工具類 * 定義一個properties檔案,儲存資料庫的4大資訊 * 在成員位置定義5個儲存資料庫資訊的變數 * 定義一個靜態程式碼塊 * a.使用Properties集合+IO讀取配置檔案中的資訊,把資訊儲存到集合中 * b.獲取集合中的資料庫連線資訊,給成員變數賦值 * c.註冊驅動和獲取資料庫連線物件 * 定義一個靜態方法,用於獲取並返回資料庫連線物件Connection * 定義一個靜態方法,用於釋放資源 */ public class JDBCUtils { /** * 在成員位置定義5個儲存資料庫資訊的變數 */ private static String driver; private static String url; private static String user; private static String password; /** * 定義一個Connection型別的變數用來儲存獲取到的Connection例項化物件 */ private static Connection conn; /** * 私有構造方法,防止使用者建立物件,浪費記憶體空間 */ private JDBCUtils() { } static { try { /** * 使用properties集合讀取配置資訊 */ FileReader fr = new FileReader("data.properties"); Properties p = new Properties(); p.load(fr); /** * 獲取集合中的資料庫連線資訊,給成員變數賦值 */ driver = p.getProperty("driver"); url = p.getProperty("url"); user = p.getProperty("user"); password = p.getProperty("password"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } /** * 建立驅動和資料庫連線物件 */ try { Class.forName(driver); conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); /** * 如果資料庫連線失敗,則不應該繼續往下,丟擲執行時異常給虛擬機器,終止程式 */ throw new RuntimeException("資料庫連線失敗!"); } } /** * 定義一個靜態方法,用於獲取資料庫連線物件Connection */ public static Connection getConnection() { return conn; } /** * 定義一個靜態方法,用於釋放資源 */ public static void close(ResultSet rs, Statement stat, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stat != null) { try { stat.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; /* * 測試JDBCUtils工具類 */ public class Test { public static void main(String[] args) { show(); } private static void show() { /** * 獲取資料庫連線物件Connection */ Connection conn = JDBCUtils.getConnection(); Statement stat = null; ResultSet rs = null; try { /** * 獲取執行sql語句的執行者物件 */ stat = conn.createStatement(); /** * 執行sql語句 */ String sql = "SELECT * FROM 表名"; rs = stat.executeQuery(sql); /** * 處理結果集,遍歷Set集合 */ if (rs.next()) { System.out.println(rs.getInt("cid") + "\t" + rs.getString("cname")); } else { System.out.println("沒有查詢到指定的資料!"); } } catch (Exception e) { e.printStackTrace(); } finally { /** * 使用JDBCUtilsConfig工具類中的方法close釋放資源 */ JDBCUtils.close(rs, stat, conn); } } }