Java?JDBC高封裝Util類的項目實踐
Java JDBC高封裝Util類
import java.sql.*;
?
public class JdbcUtil {
?
private static final String URL = "jdbc:mysql://localhost:3306/database?serverTimezone=UTC&useSSL=false";
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
?
private static Connection connection = null;
?
static {
try {
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
?
public static PreparedStatement getPreparedStatement(String sql, Object... args) throws SQLException {
PreparedStatement preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
preparedStatement.setObject(i + 1, args[i]);
}
return preparedStatement;
}
?
public static ResultSet executeQuery(String sql, Object... args) throws SQLException {
PreparedStatement preparedStatement = getPreparedStatement(sql, args);
return preparedStatement.executeQuery();
}
?
public static int executeUpdate(String sql, Object... args) throws SQLException {
PreparedStatement preparedStatement = getPreparedStatement(sql, args);
return preparedStatement.executeUpdate();
}
?
public static void close() {
try {
if (connection != null && !connection.isClosed()) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}使用方法:
- 在需要使用JDBC連接的類中導入該util類。
- getPreparedStatement方法用于獲取預編譯語句對象并填充參數(shù),返回PreparedStatement對象。
- executeQuery方法用于執(zhí)行SELECT語句并返回查詢結(jié)果集,使用時需要傳入SQL語句和占位符參數(shù)。
- executeUpdate方法用于執(zhí)行增刪改操作并返回影響的行數(shù),使用時需要傳入SQL語句和占位符參數(shù)。
- 使用完畢后,調(diào)用close方法關閉連接。
請注意修改URL、USERNAME和PASSWORD為正確的值。
舉例:
假設我們有一個名為users的表,包括id、name和age三個字段?,F(xiàn)在要查詢出所有用戶的姓名,可以這樣做:
import java.sql.*;
?
public class Main {
public static void main(String[] args) {
try {
String sql = "SELECT name FROM users";
ResultSet resultSet = JdbcUtil.executeQuery(sql);
while (resultSet.next()) {
String name = resultSet.getString("name");
System.out.println(name);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close();
}
}
}上述代碼中我們調(diào)用了JdbcUtil工具類的executeQuery方法來執(zhí)行SQL查詢語句,并獲取了查詢結(jié)果集。然后,我們遍歷結(jié)果集并打印出各個用戶的姓名。
如果需要執(zhí)行連接關閉操作,則需要在finally塊中調(diào)用JdbcUtil工具類的close方法來釋放連接。
以上僅是一個簡單的例子,當然在實際開發(fā)中需要更多的參數(shù)設置和邏輯控制。
補充:
使用Vector數(shù)據(jù)結(jié)構將查詢結(jié)果放置到表格控件中。
以下是一個簡單的例子,代碼中使用了javax.swing包中的JTable和DefaultTableModel類:
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
?
public class Main {
?
public static void main(String[] args) {
try {
// 執(zhí)行查詢語句
String sql = "SELECT * FROM users";
ResultSet resultSet = JdbcUtil.executeQuery(sql);
?
// 將查詢結(jié)果封裝為Vector數(shù)據(jù)結(jié)構
Vector<String> columnNames = new Vector<>();
columnNames.add("id");
columnNames.add("name");
columnNames.add("age");
?
Vector<Vector<Object>> data = new Vector<>();
while (resultSet.next()) {
Vector<Object> row = new Vector<>();
row.add(resultSet.getInt("id"));
row.add(resultSet.getString("name"));
row.add(resultSet.getInt("age"));
data.add(row);
}
?
// 創(chuàng)建表格,并設置數(shù)據(jù)
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model);
?
// 將表格放置到窗口中
JFrame frame = new JFrame();
frame.getContentPane().add(new JScrollPane(table));
frame.setPreferredSize(new Dimension(500, 300));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
?
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcUtil.close();
}
}
}在上述代碼中,我們將查詢結(jié)果封裝為了一個Vector<Vector<Object>>類型的二維向量,其中外層向量表示所有行,內(nèi)層向量則表示每一行上的數(shù)據(jù),每個內(nèi)層向量的第一個元素表示"id"列的值,第二個元素表示"name"列的值,第三個元素表示"age"列的值。然后,我們使用DefaultTableModel類將查詢結(jié)果設置到表格中,并最終將表格放到窗口中以便查看。
此外,需要注意的是,在實際開發(fā)中,可能需要對查詢結(jié)果進行更多的處理和格式控制。這里只是一個簡單的使用例子,僅供參考。
到此這篇關于Java JDBC高封裝Util類的項目實踐的文章就介紹到這了,更多相關Java JDBC封裝Util類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
IKAnalyzer使用不同版本中文分詞的切詞方式實現(xiàn)相同功能效果
今天小編就為大家分享一篇關于IKAnalyzer使用不同版本中文分詞的切詞方式實現(xiàn)相同功能效果,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
Mybatis敏感數(shù)據(jù)加解密插件實現(xiàn)過程
本文介紹了基于MyBatis的敏感數(shù)據(jù)全鏈路安全處理方案,包括插件開發(fā)原理、具體實現(xiàn)代碼以及數(shù)據(jù)庫函數(shù)集成,通過MyBatis插件實現(xiàn)自動加解密,結(jié)合注解和攔截器技術,確保數(shù)據(jù)在數(shù)據(jù)庫操作的各個環(huán)節(jié)中的安全性2026-01-01
在Java中將XLS轉(zhuǎn)換為XLSX的實現(xiàn)方案
在本文中,我們將探討傳統(tǒng)Excel XLS格式與現(xiàn)代XLSX格式的結(jié)構差異,并為Java開發(fā)者提供轉(zhuǎn)換方案,通過了解底層原理、性能優(yōu)勢及實用工具,您將掌握高效實現(xiàn)文件格式遷移的方法,需要的朋友可以參考下2025-06-06
Springboot內(nèi)置的工具類之CollectionUtils示例講解
這篇文章主要介紹了Springboot內(nèi)置的工具類之CollectionUtils,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12

