Java中呼叫sqlServer的儲存過程(CallableStatement)的幾種簡單情況
阿新 • • 發佈:2018-11-21
一、呼叫不帶引數的儲存過程
--建立儲存過程
create procedure testselect as
begin
select bno from book;
end
package com.nc.dao; import java.sql.*; public class testCall { public static void main(String[] args){ Connection connection = JDBCUtil.getConn(); String sql = "{call testselect}"; try { // 建立資料庫的連線 CallableStatement cstmt = connection.prepareCall(sql); // 查詢 ResultSet rs = cstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); } } }
對比資料庫查詢結果
二、呼叫帶引數的儲存過程
// 帶引數
create procedure testselect @bno char(12)
as
begin
select bno from book where bno = @bno
end
package com.nc.dao; import java.sql.*; public class testCall { public static void main(String[] args){ Connection connection = JDBCUtil.getConn(); String sql = "{call testselect(?)}"; try { // 建立資料庫的連線 CallableStatement cstmt = connection.prepareCall(sql); cstmt.setString(1, "0000001"); // 查詢 ResultSet rs = cstmt.executeQuery(); while(rs.next()){ System.out.println(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); } } }
對比資料庫查詢結果
三、帶輸出引數的儲存過程
go
create procedure testselect @bno char(12), @result char(12) output
as
begin
select @result = bno from book where bno = @bno
end
go
package com.nc.dao; import java.sql.*; public class testCall { public static void main(String[] args){ Connection connection = JDBCUtil.getConn(); String sql = "{call testselect(?, ?)}"; try { // 建立資料庫的連線 CallableStatement cstmt = connection.prepareCall(sql); // 按照索引設定引數 // cstmt.setString(1, "0000001"); // 將名為 parameterName 的引數註冊為 JDBC 型別 sqlType。 // cstmt.registerOutParameter(2, Types.CHAR); // 按引數名折設定引數 cstmt.setString("bno", "0000001"); // 將名為 parameterName 的引數註冊為 JDBC 型別 sqlType。 cstmt.registerOutParameter("result", Types.CHAR); cstmt.execute(); // 引數索引必須與call的引數位置一致 System.out.println(cstmt.getString(2)); } catch (SQLException e) { e.printStackTrace(); } } }
對比資料庫查詢結果