成人免费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-28 14:30:35

ASP.NET JSP

2009-07-01 09:27:22

ASP.NETJSPPHP

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-27 14:41:33

ASP.NET調用存儲

2011-04-29 13:23:11

分頁數據存儲

2009-07-22 18:03:00

ASP.NET ASP

2009-07-27 14:46:16

XML和ASP.NET

2015-08-19 14:18:56

SQLasp.net后臺調用

2009-07-24 09:02:24

ASP.Net RSA

2009-12-11 16:28:23

ASP.NET 2.0

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-02 14:39:27

Session的值JSP Asp.net

2009-11-06 09:23:41

ASP.NET高效分頁
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩成人在线电影 | www.久久久久久久久久久 | 男女午夜免费视频 | 日韩欧美三级电影在线观看 | 亚洲第一视频网 | 亚洲国产精品激情在线观看 | 国产91在线 | 欧美 | 免费视频二区 | av日韩一区 | 精品欧美一区二区精品久久久 | 青青久草 | 伊人网伊人网 | 逼逼网| 一级特黄在线 | 国产精品久久久久久久久久三级 | 国产精品久久久久久妇女6080 | av国产精品 | 国产精品久久久久久久久久久久久久 | 国产在线视频一区 | 国产99视频精品免视看9 | 亚洲精品一区二区三区在线观看 | 亚洲欧美日韩在线一区二区 | 精品成人av | 日韩一二三区视频 | 在线播放中文字幕 | 成人在线视频免费观看 | 亚洲精品视频在线看 | 黄色电影在线免费观看 | 久久久噜噜噜久久中文字幕色伊伊 | 国产精品精品视频一区二区三区 | 欧洲性生活视频 | 人人做人人澡人人爽欧美 | 一区中文字幕 | www.日日操 | 欧美另类视频 | h片在线看| 亚洲高清视频在线观看 | 日韩免费激情视频 | 一区二区三区在线观看视频 | 亚洲精品视频在线观看视频 | 亚洲成人一区 |