一、建立資料庫連接
在使用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-tw/n/145062.html