首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JDBC 調用存儲過程實戰(四):修改數據存儲過程與參數綁定

     編輯:Java 相關知識

本篇演示 UPDATE 類存儲過程的創建與 Java 調用,包含整數與字符串混合參數綁定,並驗證修改結果。

存儲過程定義

create procedure ModPro
    @StuID int,
    @StuName varchar(10)
as
    update 學生基本信息表 set StuName = @StuName where StuID = @StuID

執行測試:exec ModPro 2, '四毛'

Java 調用代碼

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();
    }
}

關鍵點

  1. 參數順序嚴格對應:存儲過程定義順序 @StuID, @StuName,Java 綁定順序必須一致(索引 1、2)。
  2. 類型匹配:setInt 對應 int,setString 對應 varchar。
  3. 執行方法:execute() 通用於任何存儲過程調用;明確為 DML 可用 executeUpdate() 獲取影響行數。
  4. 驗證機制:調用通用查詢過程 selePro 回顯數據,確認修改生效。

生產環境建議

  • 使用 PreparedStatement 批量更新通常比循環調用存儲過程性能更好。
  • 修改操作建議加入事務控制與樂觀鎖(版本號/時間戳)防止併發覆蓋。
  • 異常處理務必捕獲 SQLException 並記錄 SQL 狀態碼、錯誤碼、訊息。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved