一、建立數據庫連接
在使用MySQLConnection進行操作前,首先需要建立數據庫連接,代碼示例如下:
try {
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
}
上述代碼中,我們通過jdbc:mysql://localhost:3306/test建立了一個到本地test數據庫的連接,用戶名和密碼分別為root和root。
此外,我們還需要捕獲可能出現的SQLException異常。
二、執行SQL語句
建立好數據庫連接後,我們就可以通過MySQLConnection向數據庫執行SQL語句了,代碼示例如下:
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
String sql = "SELECT * FROM student WHERE age > 18";
rs = stmt.executeQuery(sql);
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("Name: " + name + " age: " + age);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
上述代碼中,我們首先通過conn.createStatement()創建一個Statement對象,然後使用stmt.executeQuery(sql)方法執行查詢操作,將結果保存在ResultSet對象中。最後,通過rs.next()逐行遍歷結果集,獲取每一行的數據。
此外,我們還需要在finally塊中關閉ResultSet、Statement和Connection對象,可以避免連接泄漏。
三、預處理SQL語句
在執行SQL語句時,如果SQL語句包含變量,需要通過預處理機制進行處理。代碼示例如下:
PreparedStatement pstmt = null;
try {
String sql = "INSERT INTO student (name, age) VALUES (?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "Tom");
pstmt.setInt(2, 20);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
上述代碼中,我們首先使用conn.prepareStatement(sql)創建一個PreparedStatement對象,然後通過pstmt.setString(1, “Tom”)和pstmt.setInt(2, 20)設置SQL語句中的變量值,最後通過pstmt.executeUpdate()執行SQL語句。
與執行普通SQL語句類似,我們還需要在finally塊中關閉PreparedStatement和Connection對象。
四、事務處理
MySQLConnection還支持事務處理機制,可以通過開啟事務來操作數據庫。代碼示例如下:
try {
conn.setAutoCommit(false); // 關閉自動提交
Statement stmt = conn.createStatement();
String sql1 = "UPDATE student SET age = age - 1 WHERE name = 'Tom'";
stmt.executeUpdate(sql1);
String sql2 = "UPDATE student SET age = age + 1 WHERE name = 'Jerry'";
stmt.executeUpdate(sql2);
conn.commit(); // 提交事務
} catch (SQLException e) {
try {
conn.rollback(); // 回滾事務
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
conn.setAutoCommit(true); // 恢復自動提交
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
上述代碼中,我們首先通過conn.setAutoCommit(false)關閉自動提交機制,然後將多個SQL語句放在同一個事務中執行,最後通過conn.commit()提交事務。如果事務執行失敗,可以通過conn.rollback()回滾事務。最後,我們需要在finally塊中恢復自動提交機制並關閉Connection對象。
原創文章,作者:FPYH,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/145062.html
微信掃一掃
支付寶掃一掃