一、從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
微信掃一掃
支付寶掃一掃