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

JDBC 調用存儲過程實戰(六):帶參數的新增數據存儲過程調用

     編輯:Java 相關知識

本篇演示如何編寫帶輸入參數的存儲過程實現數據新增,並在 Java 中通過 CallableStatement 設置參數、執行調用,最後驗證數據是否入庫。

存儲過程定義 (SQL Server 語法)

create procedure InsertPro
    @StuID int,
    @StuName varchar(10),
    @StuAddress varchar(20)
as
    insert into 學生基本信息表 values(@StuID, @StuName, @StuAddress)

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 InsertPro(?,?,?)}");
        // 2. 設置輸入參數 (索引從 1 開始)
        c.setInt(1, 6);
        c.setString(2, "Liu");
        c.setString(3, "wuhan");

        // 3. 執行更新
        c.execute();

        // 4. 驗證:調用查詢存儲過程 selePro
        c = conn.prepareCall("{call selePro}");
        ResultSet rs = c.executeQuery();

        while (rs.next()) {
            String stuid = rs.getString("StuID");
            String name = rs.getString("StuName");
            String address = rs.getString("StuAddress");
            System.out.println(stuid + " " + name + " " + address);
        }

        c.close();
        conn.close();
    }
}

關鍵技術點

  1. 參數佔位符:{call InsertPro(?,?,?)} 中的 ? 對應存儲過程定義的輸入參數順序。
  2. setXxx 方法:setInt、setString 等按索引設置參數值,索引從 1 開始。
  3. execute() vs executeUpdate():存儲過程執行通常用 execute();若確定是 DML 也可用 executeUpdate()。
  4. 驗證邏輯:調用完新增後,再次調用查詢過程 selePro 確認數據落庫。

最佳實踐提醒

  • 生產環境請使用連接池與標準驅動,避免 JDBC-ODBC Bridge。
  • 參數設置建議封裝為工具方法,減少樣板代碼。
  • 涉及多條 SQL 時需考慮事務控制(conn.setAutoCommit(false))。
  • 異常處理請使用 try-with-resources 確保資源釋放。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved