java 調用mysql的存儲過程(簡單示例)
首先我在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對象,執行相應的操作。