對比JSP和ASP.NET的存儲過程
在Java中的JSP、JSP+JSTL,.Net中的ASP.NET結合Sql Server數據庫開發中,把存儲過程使用的常規方法和最簡方式介紹一下。
本文以SQL Server 2000例
一、在JSP(JSTL)中使用存儲過程:
1、Java中過儲過程的標準使用方法:
可實現存儲過程中的各種功能,和最簡方法相比,它可以得到out參數和過程返回值。“?”就是參數的占位符,一個問號代表有一個參數。
String proc = "{call procname (?,? )}"; |
2、存儲過程的最簡寫法:
思路:將過程當作普通的sql語句去執行,也就是和查詢、更新的寫法是一樣。可實現執行過程并且得到相關的數據集,但它不能得到過程的out輸出參數,開發中90%的情況下皆適用。
String proc = "exec 過程名 "+參數1+","+參數2; |
例如:
//在JSP中使用 |
#p#
二、在ASP.NET(C#)中,使用存儲過程:
1 C#中存儲過程的使用標準版
{
SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
string sql="proc_out";
SqlCommand comm=new SqlCommand(sql,conn);
//把Command執行類型改為存儲過程方式,默認為Text。
comm.CommandType=CommandType.StoredProcedure;
//傳遞一個輸入參數,需賦值
SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);
sp.Value=10;
//定義一個輸出參數,不需賦值。Direction用來描述參數的類型
//Direction默認為輸入參數,還有輸出參數和返回值型。
sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);
sp.Direction=ParameterDirection.Output;
//定義過程的返回值參數,過程執行完之后,將把過程的返回值賦值給名為myreturn的Paremeters賦值。
sp=comm.Parameters.Add("myreturn",SqlDbType.Int);
sp.Direction=ParameterDirection.ReturnValue;
//使用SqlDataAdapter將自動完成數據庫的打開和關閉過程,并執行相應t-sql語句或存儲過程
//如果存儲過程只是執行相關操作,如級聯刪除或更新,使用SqlCommand的execute方法即可。
SqlDataAdapter da=new SqlDataAdapter(comm);
DataSet ds=new DataSet();
da.Fill(ds);
//在執行完存儲過程之后,可得到輸出參數
string myout=comm.Parameters["@output"].Value.ToString();
//打印輸出參數:
Response.Write("打印輸出參數:"+myout);
//打印存儲過程返回值
myout=comm.Parameters["myreturn"].Value.ToString();
Response.Write("存儲過程返回值:"+myout);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
2 存儲過程的使用最簡版:
private void sql_jyh() |
總結,對于SQL Server庫而言,無論用什么語言,都可以這樣來使用,即當作普通查詢語句。
string sql="execute proc_out 10,'12'";
把這個sql作為參數,在java或者C#中均能得到正確的執行。這也是使用存儲過程的最簡方法。
【編輯推薦】