一、從JDBC工具類抽取
JDBC(Java 資料庫連接)是用於連接和操作資料庫的Java API,它定義了一系列的介面和類,使得Java程序能夠與資料庫進行交互。而在進行JDBC編程時,我們通常需要編寫許多樣板代碼,如載入資料庫驅動、創建資料庫連接、關閉連接等操作,這些重複的代碼極大地影響了編程效率。
為了解決這個問題,在實際開發中,我們通常封裝一個JDBC工具類,將其中常用的連接和關閉資料庫等操作封裝起來,簡化了JDBC編程的流程。
下面是一個簡單的JDBC工具類的示例代碼:
public class JDBCUtils { private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password= "123456"; // 載入資料庫驅動 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 獲取資料庫連接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } // 關閉資料庫連接 public static void close(ResultSet rs, Statement stmt, Connection conn) { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
二、JDBC工具類封裝實體類
JDBC工具類的另一個重要作用是封裝實體類,使得我們可以通過對實體類的操作來對資料庫進行增刪改查。一般來說,我們需要為每一個實體類定義一個DAO(Data Access Object)類,該類中包含實體類的增刪改查方法,這些方法會調用JDBC工具類中的方法來操作資料庫。下面是一個DAO類的示例代碼:
public class UserDAO { // 增加用戶 public void addUser(User user) { Connection conn = null; PreparedStatement stmt = null; try { conn = JDBCUtils.getConnection(); String sql = "insert into user(name, age, gender) values(?, ?, ?)"; stmt = conn.prepareStatement(sql); stmt.setString(1, user.getName()); stmt.setInt(2, user.getAge()); stmt.setString(3, user.getGender()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(null, stmt, conn); } } // 刪除用戶 public void deleteUser(User user) { Connection conn = null; PreparedStatement stmt = null; try { conn = JDBCUtils.getConnection(); String sql = "delete from user where id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, user.getId()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(null, stmt, conn); } } // 更新用戶 public void updateUser(User user) { Connection conn = null; PreparedStatement stmt = null; try { conn = JDBCUtils.getConnection(); String sql = "update user set name=?, age=?, gender=? where id=?"; stmt = conn.prepareStatement(sql); stmt.setString(1, user.getName()); stmt.setInt(2, user.getAge()); stmt.setString(3, user.getGender()); stmt.setInt(4, user.getId()); stmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(null, stmt, conn); } } // 根據id查找用戶 public User findUserById(int id) { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; try { conn = JDBCUtils.getConnection(); String sql = "select * from user where id=?"; stmt = conn.prepareStatement(sql); stmt.setInt(1, id); rs = stmt.executeQuery(); if (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); user.setGender(rs.getString("gender")); return user; } } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(rs, stmt, conn); } return null; } // 查找所有用戶 public List findAllUsers() { List userList = new ArrayList(); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = JDBCUtils.getConnection(); String sql = "select * from user"; stmt = conn.createStatement(); rs = stmt.executeQuery(sql); while (rs.next()) { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); user.setGender(rs.getString("gender")); userList.add(user); } } catch (SQLException e) { e.printStackTrace(); } finally { JDBCUtils.close(rs, stmt, conn); } return userList; } }
三、JDBC工具類連接資料庫步驟
JDBC工具類連接資料庫的步驟如下:
1、載入資料庫驅動
在進行JDBC編程時,我們需要先載入資料庫驅動,例如MySQL的驅動為com.mysql.jdbc.Driver。我們可以通過以下代碼來載入MySQL資料庫驅動:
Class.forName("com.mysql.jdbc.Driver");
2、創建資料庫連接
一旦載入了資料庫驅動,我們就可以使用DriverManager類來創建資料庫連接。連接資料庫的過程需要指定資料庫的URL、用戶名和密碼。例如:
String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password);
3、創建Statement對象
創建Statement對象可以執行SQL語句並返回結果集。例如:
Statement stmt = conn.createStatement(); String sql = "select * from user"; ResultSet rs = stmt.executeQuery(sql);
4、執行SQL
對於INSERT、UPDATE和DELETE語句,我們可以使用Statement對象或者PreparedStatement對象執行SQL。例如:
// Statement對象 String sql1 = "insert into user(name, age, gender) values('Tom', 20, 'male')"; stmt.executeUpdate(sql1); // PreparedStatement對象 String sql2 = "insert into user(name, age, gender) values(?, ?, ?)"; PreparedStatement pstmt = conn.prepareStatement(sql2); pstmt.setString(1, "Tom"); pstmt.setInt(2, 20); pstmt.setString(3, "male"); pstmt.executeUpdate();
5、處理結果
對於SELECT語句,我們需要使用ResultSet對象處理結果集。例如:
while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); String gender = rs.getString("gender"); }
6、關閉連接
使用完資料庫連接後,我們需要將其關閉,以釋放資源。例如:
if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); }
四、JDBC工具類怎麼寫
封裝一個JDBC工具類的關鍵在於將載入驅動、創建連接和關閉連接等繁瑣的操作封裝起來,使得我們調用起來更加簡潔方便。下面是一份常見的JDBC工具類:
public class JDBCUtils { private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password = "123456"; private JDBCUtils() { } // 註冊驅動,靜態代碼塊 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 獲取連接對象 * * @return 連接對象 * @throws SQLException SQL異常 */ public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } /** * 釋放資源 * * @param conn 連接對象 * @param stmt Statement語句執行對象 * @param rs 結果集 */ public static void close(Connection conn, Statement stmt, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
五、JDBC工具類屬於模型層嗎
JDBC工具類屬於模型層。在MVC(Model-View-Controller)架構中,模型層是負責處理數據和狀態的一層,它與資料庫進行交互,封裝了資料庫的操作,向上層提供API來操作實體類。而JDBC工具類正是負責連接和操作資料庫的,因此屬於模型層。
六、JDBC工具類是什麼
JDBC工具類是一個Java類,封裝了JDBC編程的相關操作,如載入資料庫驅動、建立資料庫連接、執行SQL語句、處理結果集等。它的主要作用是簡化JDBC編程的流程,減少重複的樣板代碼,提高了程序員的開發效率。
七、JDBC編程的六個步驟
JDBC編程的六個步驟如下:
1、載入資料庫驅動
通過Class.forName()方法載入資料庫驅動,例:
Class.forName("com.mysql.jdbc.Driver");
2、建立資料庫連接
使用DriverManager.getConnection()方法建立資料庫連接,如:
String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password);
3、創建Statement對象
使用Connection.createStatement()方法創建Statement對象,如:
Statement stmt = conn.createStatement();
4、執行SQL語句
使用Statement.executeXXX()方法執行SQL語句,如:
String sql = "select * from user"; ResultSet rs = stmt.executeQuery(sql);
5、處理結果集
使用ResultSet對象處理結果集,如:
while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); String gender = rs.getString("gender"); }
6、釋放資源
使用Connection.close()方法關閉連接,如:
if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); }
八、JDBC連接資料庫步驟
JDBC連接資料庫的步驟如下:
1、載入資料庫驅動
通過Class.forName()方法載入資料庫驅動,例如MySQL的驅動為com.mysql.jdbc.Driver,可以使用如下代碼載入MySQL資料庫驅動:
Class.forName("com.mysql.jdbc.Driver");
2、創建資料庫連接
連接資料庫需要指定資料庫的URL、用戶名和密碼,例如:
String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password);
3、創建Statement對象
創建Statement對象可以執行SQL語句並返回結果集。例如:
Statement stmt = conn.createStatement();
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);
</pre原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/257810.html