本篇演示 UPDATE 類存儲過程的創建與 Java 調用,包含整數與字符串混合參數綁定,並驗證修改結果。
create procedure ModPro
@StuID int,
@StuName varchar(10)
as
update 學生基本信息表 set StuName = @StuName where StuID = @StuID
執行測試:exec ModPro 2, '四毛'
import java.sql.*;
public class ProcedureTest {
public static void main(String args[]) throws Exception {
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
Connection conn = DriverManager.getConnection("jdbc:odbc:mydata", "sa", "");
// 1. 準備調用修改存儲過程
CallableStatement c = conn.prepareCall("{call ModPro(?,?)}");
// 2. 綁定參數:int + varchar
c.setInt(1, 2);
c.setString(2, "美女");
// 3. 執行更新
c.execute();
// 4. 驗證修改結果:調用查詢過程 selePro
c = conn.prepareCall("{call selePro}");
ResultSet rs = c.executeQuery();
while (rs.next()) {
String stu = rs.getString("StuID");
String name = rs.getString("StuName");
String add = rs.getString("StuAddress");
System.out.println("學號: " + stu + " 姓名: " + name + " 地址: " + add);
}
c.close();
conn.close();
}
}
@StuID, @StuName,Java 綁定順序必須一致(索引 1、2)。setInt 對應 int,setString 對應 varchar。execute() 通用於任何存儲過程調用;明確為 DML 可用 executeUpdate() 獲取影響行數。selePro 回顯數據,確認修改生效。PreparedStatement 批量更新通常比循環調用存儲過程性能更好。SQLException 並記錄 SQL 狀態碼、錯誤碼、訊息。