- JDBC 教程
- JDBC - 首頁
- JDBC - 簡介
- JDBC - SQL 語法
- JDBC - 環境配置
- JDBC - 示例程式碼
- JDBC - 驅動程式型別
- JDBC - 連線
- JDBC - 語句
- JDBC - 結果集
- JDBC - 資料型別
- JDBC - 事務
- JDBC - 異常處理
- JDBC - 批次處理
- JDBC - 儲存過程
- JDBC - 流式資料
- JDBC - RowSet
- JDBC - 複製資料庫
- JDBC - ACID 屬性
- JDBC - 連線池
- JDBC 示例
- JDBC - 建立資料庫
- JDBC - 選擇資料庫
- JDBC - 刪除資料庫
- JDBC - 建立表
- JDBC - 刪除表
- JDBC - 插入記錄
- JDBC - 查詢記錄
- JDBC - 更新記錄
- JDBC - 刪除記錄
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 資料排序
- JDBC 有用資源
- JDBC - 常見問題解答
- JDBC - 快速指南
- JDBC - 有用資源
- JDBC - 討論
- 有用 - Java 教程
JDBC - 預處理語句物件示例
以下示例演示瞭如何使用 PreparedStatement 以及開啟和關閉語句:
此示例程式碼基於前面章節中完成的環境和資料庫設定。
使用 PreparedStatement 更新整數值示例
在這個例子中,我們有五個靜態字串,包含資料庫連線 URL、使用者名稱、密碼、SELECT 查詢和 UPDATE 查詢。UPDATE 查詢中包含年齡和 ID 的佔位符,這些佔位符將由 PreparedStatement 填充。現在,使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 connection.prepareStatement() 方法建立了一個 PreparedStatement 物件。現在,使用 setInt() 方法,我們相應地設定了年齡和 ID 的佔位符值。
使用 statement.executeUpdate(),我們運行了更新查詢,修改的行數儲存在 rows 變數中。最後,使用 statement.executeQuery() 執行 SELECT 查詢並將結果儲存在結果集中。現在迭代結果集並列印每條記錄以檢查更新後的內容。
將以下示例複製並貼上到 JDBCPreparedStatementExample.java 中,編譯並執行如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCPreparedStatementExample {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
static final String PASS = "guest123";
static final String QUERY = "SELECT id, first, last, age FROM Employees";
static final String UPDATE_QUERY = "UPDATE Employees set age=? WHERE id=?";
public static void main(String[] args) {
// Open a connection
try(Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement stmt = conn.prepareStatement(UPDATE_QUERY);
) {
// Bind values into the parameters.
stmt.setInt(1, 35); // This would set age
stmt.setInt(2, 102); // This would set ID
// Let us update age of the record with ID = 102;
int rows = stmt.executeUpdate();
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
ResultSet rs = stmt.executeQuery(QUERY);
// Extract data from result set
while (rs.next()) {
// Retrieve by column name
System.out.print("ID: " + rs.getInt("id"));
System.out.print(", Age: " + rs.getInt("age"));
System.out.print(", First: " + rs.getString("first"));
System.out.println(", Last: " + rs.getString("last"));
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
輸出
現在,我們按如下方式編譯上述示例:
C:\>javac JDBCPreparedStatementExample.java C:\>
執行 **JDBCPreparedStatementExample** 時,會產生以下結果:
C:\>java JDBCPreparedStatementExample Return value is : false Rows impacted : 1 ID: 100, Age: 18, First: Zara, Last: Ali ID: 101, Age: 25, First: Mehnaz, Last: Fatma ID: 102, Age: 35, First: Zaid, Last: Khan ID: 103, Age: 30, First: Sumit, Last: Mittal C:\>
使用 PreparedStatement 更新字串值示例
在這個例子中,我們有五個靜態字串,包含資料庫連線 URL、使用者名稱、密碼、SELECT 查詢和 UPDATE 查詢。UPDATE 查詢中包含部門和 ID 的佔位符,這些佔位符將由 PreparedStatement 填充。現在,使用 DriverManager.getConnection() 方法,我們準備了一個數據庫連線。連線準備就緒後,我們使用 connection.prepareStatement() 方法建立了一個 PreparedStatement 物件。現在,使用 setString() 方法設定部門的佔位符值,並使用 setInt() 方法設定 ID。
使用 statement.executeUpdate(),我們運行了更新查詢,修改的行數儲存在 rows 變數中。最後,使用 statement.executeQuery() 執行 SELECT 查詢並將結果儲存在結果集中。現在迭代結果集並列印每條記錄以檢查更新後的內容。
將以下示例複製並貼上到 JDBCPreparedStatementExample.java 中,編譯並執行如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCPreparedStatementExample {
static final String DB_URL = "jdbc:mysql:///TUTORIALSPOINT";
static final String USER = "guest";
static final String PASS = "guest123";
static final String QUERY = "SELECT StudentID, LastName, FirstName, Dept FROM Students";
static final String UPDATE_QUERY = "UPDATE Students set Dept=? WHERE studentid=?";
public static void main(String[] args) {
try{
// Open a connection
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
PreparedStatement pstmt = conn.prepareStatement(UPDATE_QUERY);
// Bind values into the parameters.
pstmt.setString(1, "Mathematics");
pstmt.setInt(2, 1000);
// Updating Dept of the record with StudentID = 1000
int rows = pstmt.executeUpdate();
System.out.println("Rows impacted : " + rows );
// Let us select all the records and display them.
ResultSet rs = pstmt.executeQuery(QUERY);
// Extract data from result set
while (rs.next()) {
// Retrieve by column name
System.out.print("ID: " + rs.getInt("StudentID"));
System.out.print(", LastName: " + rs.getString("LastName"));
System.out.print(", FirstName: " + rs.getString("FirstName"));
System.out.println(", Dept: " + rs.getString("Dept"));
}
rs.close();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
輸出
現在,我們按如下方式編譯上述示例:
C:\>javac JDBCPreparedStatementExample.java C:\>
執行 **JDBCPreparedStatementExample** 時,會產生以下結果:
C:\>java JDBCPreparedStatementExample Rows impacted : 1 ID: 1000, LastName: Agarwal, FirstName: Bonny, Dept: Mathematics ID: 1001, LastName: Pandey, FirstName: Amit, Dept: Physics ID: 1002, LastName: Kumar, FirstName: Shefali, Dept: English ID: 1004, LastName: Ali, FirstName: Mohammed, Dept: Mathematics ID: 1005, LastName: Kumar, FirstName: Kishore, Dept: Biology C:\>