成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對比JSP和ASP.NET的存儲過程

開發 后端 數據庫運維
本文通過實例,簡單講解在Java中的JSP、JSP+JSTL,.Net中的ASP.NET結合Sql Server數據庫開發中,存儲過程使用的常規方法和最簡方式。

在Java中的JSP、JSP+JSTL,.Net中的ASP.NET結合Sql Server數據庫開發中,把存儲過程使用的常規方法和最簡方式介紹一下。

本文以SQL Server 2000例

一、在JSP(JSTL)中使用存儲過程:

1、Java中過儲過程的標準使用方法:

可實現存儲過程中的各種功能,和最簡方法相比,它可以得到out參數和過程返回值。“?”就是參數的占位符,一個問號代表有一個參數。

String   proc   =   "{call   procname   (?,? )}";
CallableStatement   stat   =   con.prepareCall(proc);
//第一個參數為in的話,說明?號應為英文輸入法下的,這個博客不能輸入英文的問號。
stat.setString(1,'paravalue');//設置參數值
//第二個參數作out的話
stat.registerOutParameter(1,java.sql.Types.VARCHAR);//設置參數類型
stat.execute();
String   paraValue   =   stat.getString(2);//得到out參數值
例如:
%@page import="java.sql.*"%﹥
%@page import="java.text.*"%﹥
%@page contentType="text/html;charset=GB2312"%﹥
%@include file="opendata.jsp"%﹥
﹤%
String strSQL = "{call pdrivertotal( , )}";
CallableStatement stmt = con.prepareCall(strSQL);
stmt.setString(1,"2005-08-20");
stmt.setString(2,"2005-10-01");
stmt.execute();
%﹥

2、存儲過程的最簡寫法:

思路:將過程當作普通的sql語句去執行,也就是和查詢、更新的寫法是一樣。可實現執行過程并且得到相關的數據集,但它不能得到過程的out輸出參數,開發中90%的情況下皆適用。

String   proc   =   "exec  過程名 "+參數1+","+參數2;
Statement   stat   =   con.createStatement();
ResultSet   rs   =   stat.executeQuery(proc);

例如:

//在JSP中使用
﹤%
Statement   stat   =   con.createStatement();
ResultSet   rs   =   stat.executeQuery("zyfproc 20 '姓名'");
//zyfproc為存儲過程名 20為int型參數,姓名為varchar類參數
%﹥
//在使用了jstl標簽的jsp中使用
﹤!--執行存儲過程--﹥
﹤sql:update var="proc" sql="exec jproc ?,?" dataSource="${ds}"﹥
﹤!-- 說明?號應為英文輸入法下的,這個博客不能輸入英文的問號。--﹥
    ﹤sql:param value="${param.hid}"/﹥
﹤sql:param value="${param.sid}"/﹥
﹤/sql:update﹥

#p#

二、在ASP.NET(C#)中,使用存儲過程:

1  C#中存儲過程的使用標準版

private void sql_proc()
  {  
   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()
  {
  //最簡寫法,把存儲過程當作t-sql語句來使用,語法為:exec 過程名 參數
  SqlConnection conn=new SqlConnection("server=.;uid=sa;pwd=1234;database=china");
  string sql="execute proc_out 10,'12'";
  SqlCommand comm=new SqlCommand(sql,conn); 
  //使用SqlDataAdapter將自動完成數據庫的打開和關閉過程,并執行相應t-sql語句或存儲過程
  //如果存儲過程只是執行相關操作,如級聯刪除或更新,使用SqlCommand的execute方法即可。
  SqlDataAdapter da=new SqlDataAdapter(comm);
  DataSet ds=new DataSet();
  da.Fill(ds); 
  //綁定數據
  this.DataGrid1.DataSource=ds;
  this.DataGrid1.DataBind(); 
  }

總結,對于SQL Server庫而言,無論用什么語言,都可以這樣來使用,即當作普通查詢語句。

string sql="execute proc_out 10,'12'";

把這個sql作為參數,在java或者C#中均能得到正確的執行。這也是使用存儲過程的最簡方法。

 

【編輯推薦】

  1. DB2 9存儲過程的規劃和實施技巧
  2. 使用PHP調用MySQL的存儲過程
  3. 分布式DBA:SQL存儲過程知識總結
責任編輯:book05 來源: chinaitlab
相關推薦

2012-04-23 15:10:18

ASP.NET

2009-07-21 13:30:59

JSP技術ASP.NET

2009-07-27 14:33:51

ASP.NET調用存儲

2009-07-01 09:27:22

ASP.NETJSPPHP

2009-07-28 14:30:35

ASP.NET JSP

2009-07-20 13:14:25

安裝ASP.NET A

2009-07-24 10:41:00

ASP.NET Ses

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-22 18:03:00

ASP.NET ASP

2015-08-19 14:18:56

SQLasp.net后臺調用

2009-07-27 14:41:33

ASP.NET調用存儲

2011-04-29 13:23:11

分頁數據存儲

2009-07-27 14:46:16

XML和ASP.NET

2009-07-24 09:02:24

ASP.Net RSA

2009-12-11 16:28:23

ASP.NET 2.0

2009-11-06 09:23:41

ASP.NET高效分頁

2009-07-27 13:25:15

Postback程序處ASP.NET

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩中文视频 | 免费观看av网站 | 久久久国产精品网站 | 99在线免费观看 | 久久免费香蕉视频 | 久久久久久国产免费视网址 | 夜夜久久| 精品福利一区二区三区 | 综合亚洲视频 | 亚洲不卡在线观看 | 欧美一区二区在线 | 午夜精品一区二区三区在线视 | av喷水| 99re热精品视频国产免费 | 久久久www成人免费精品 | 亚洲一区二区三区四区在线观看 | 国产日韩欧美中文 | 伊人精品在线视频 | 国内在线视频 | 亚洲国产精品久久 | 亚洲一区二区三区在线 | 亚洲精品视频一区 | 色吊丝2| 免费在线毛片 | 精品国产乱码久久久久久闺蜜 | 在线观看av网站永久 | 国产精品视频 | 成人免费看黄网站在线观看 | 日日射影院 | 成人免费观看视频 | 日本成人片在线观看 | 日本免费在线看 | 久久lu | 精品久久久久香蕉网 | 黄色毛片在线观看 | 免费看黄色视屏 | 欧美a在线 | 国产福利视频网站 | 看av片网站 | 日本免费在线观看视频 | 欧美久久精品一级黑人c片 91免费在线视频 |