首先我在mysql的test資料庫裡定義了一個student表:
create table student4(
id int primary key,
sanme char(5)
);
插入幾個資料做測試用:
inset into student values(1,'mayi');
inset into student values(2,'mayi');
inset into student values(3,'mayi');
建立存儲過程:
in 型:
delimiter //
create procedure demo_in(in p_in int)
begin
select p_in;
set p_in=2;
select p_in;
end;
//
delimiter ;
java測試代碼:
CallableStatement callstatement = conn.prepareCall("call demo_in(?)");//conn,資料庫連接配接
callstatement.setInt(1, 1);//設定第一個參數
callstatement.execute();//執行
conn.close();//關閉連接配接
out型:
delimiter //
create procedure demo_out(out s int)
begin
select count(*) into s from student;
end
//
delimiter ;
java測試代碼:
CallableStatement callstatement = conn.prepareCall("call demo_out(?)");
callstatement.registerOutParameter(1, java.sql.Types.INTEGER);//注冊存儲過程的out型參數類型;使用之前必須注冊;
callstatement.execute();//執行
System.out.println(callstatement.getInt(1));//獲得存儲過程的輸出參數
conn.close();//關閉連接配接
總結: 先在資料庫中建立存儲過程,然後獲得資料庫連接配接conn後,生成CallableStatement對象,執行相應的操作。
看過的幾篇文章:保留下來,下次記憶模糊了,在複習一下!