JFinal 調用存儲過程的步驟

存儲過程

存儲過程(stored procedure)是一組為瞭完成特定功能的SQL語句集合,經編譯後存儲在服務器端的數據庫中,利用存儲過程可以加速SQL語句的執行。
存儲過程既可以有參數有返回值,且有多個返回值。但是它與函數不同,存儲過程的返回值隻是指明執行是否成功,且不能像函數那樣被直接調用,隻能利用 execute 來執行存儲過程。

創建儲存過程

無參數,無返回值

--創建名為 PERSON_PROC 的無參數、無返回值的存儲過程
create procedure PERSON_PROC
as
begin
 --往person表插入一條數據
 insert into person(name) values ('chenjy')
end

--執行存儲過程
execute PERSON_PROC

有參數,有返回值

--創建名為 PERSON_PROC2 的有輸入參數、有返回值的存儲過程
create procedure PERSON_PROC2
@Name nvarchar(10)='chenjy'  --設置默認值
as
begin
  insert into person(name) values (@Name)
  
  select * from person
  
end


--執行名為 PERSON_PROC2 的有輸入參數的存儲過程
execute PERSON_PROC2 'chenmm'

JFinal調用

新建實現ICallback的類

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import com.jfinal.plugin.activerecord.DbKit;
import com.jfinal.plugin.activerecord.ICallback;
import com.jfinal.plugin.activerecord.Record;
import com.jfinal.plugin.activerecord.RecordBuilder;

public class TestCallBack implements ICallback {
  public String name = "chenjy";  

	public ResultSet rs = null;
	CallableStatement proc = null;
	public List<Record> result = null;

	@Override
	public Object call(Connection conn) throws SQLException {
		try { 
			// 調用存儲過程 PERSON_PROC2
			proc = conn.prepareCall("{call dbo.PERSON_PROC2(?)}");   
			// 輸入參數name
			proc.setString(1, name);  
			rs = proc.executeQuery();
			// 返回值
			result = RecordBuilder.build(DbKit.getConfig(), rs);
			proc.close();
		} catch (SQLException e) {
			System.out.println(e.toString());
		}
		return result;
	}

}

調用

   TestCallBack cb = new TestCallBack();
   // 輸入參數 name=chenjynew
   cb.name = "chenjynew";
   Db.execute(cb);
   // 打印返回值					
   System.out.print(cb.result.toString());

調用成功添加瞭一條chenjynew並檢索出所有的數據

以上就是JFinal 調用存儲過程的步驟的詳細內容,更多關於JFinal 調用存儲過程的資料請關註WalkonNet其它相關文章!

推薦閱讀: