偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

在Java中的JSP、JSP+JSTL,.Net中的ASP.NET結(jié)合Sql Server數(shù)據(jù)庫開發(fā)中,把存儲過程使用的常規(guī)方法和最簡方式介紹一下。

本文以SQL Server 2000例

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

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

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

String   proc   =   "{call   procname   (?,? )}";
CallableStatement   stat   =   con.prepareCall(proc);
//第一個參數(shù)為in的話,說明?號應(yīng)為英文輸入法下的,這個博客不能輸入英文的問號。
stat.setString(1,'paravalue');//設(shè)置參數(shù)值
//第二個參數(shù)作out的話
stat.registerOutParameter(1,java.sql.Types.VARCHAR);//設(shè)置參數(shù)類型
stat.execute();
String   paraValue   =   stat.getString(2);//得到out參數(shù)值
例如:
%@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語句去執(zhí)行,也就是和查詢、更新的寫法是一樣??蓪崿F(xiàn)執(zhí)行過程并且得到相關(guān)的數(shù)據(jù)集,但它不能得到過程的out輸出參數(shù),開發(fā)中90%的情況下皆適用。

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

例如:

//在JSP中使用
﹤%
Statement   stat   =   con.createStatement();
ResultSet   rs   =   stat.executeQuery("zyfproc 20 '姓名'");
//zyfproc為存儲過程名 20為int型參數(shù),姓名為varchar類參數(shù)
%﹥
//在使用了jstl標簽的jsp中使用
﹤!--執(zhí)行存儲過程--﹥
﹤sql:update var="proc" sql="exec jproc ?,?" dataSource="${ds}"﹥
﹤!-- 說明?號應(yīng)為英文輸入法下的,這個博客不能輸入英文的問號。--﹥
    ﹤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執(zhí)行類型改為存儲過程方式,默認為Text。
   comm.CommandType=CommandType.StoredProcedure;
   //傳遞一個輸入?yún)?shù),需賦值
   SqlParameter sp=comm.Parameters.Add("@uid",SqlDbType.Int);
   sp.Value=10;
   //定義一個輸出參數(shù),不需賦值。Direction用來描述參數(shù)的類型
   //Direction默認為輸入?yún)?shù),還有輸出參數(shù)和返回值型。
   sp=comm.Parameters.Add("@output",SqlDbType.VarChar,50);
   sp.Direction=ParameterDirection.Output;
   //定義過程的返回值參數(shù),過程執(zhí)行完之后,將把過程的返回值賦值給名為myreturn的Paremeters賦值。
   sp=comm.Parameters.Add("myreturn",SqlDbType.Int);
   sp.Direction=ParameterDirection.ReturnValue;
   //使用SqlDataAdapter將自動完成數(shù)據(jù)庫的打開和關(guān)閉過程,并執(zhí)行相應(yīng)t-sql語句或存儲過程
   //如果存儲過程只是執(zhí)行相關(guān)操作,如級聯(lián)刪除或更新,使用SqlCommand的execute方法即可。
   SqlDataAdapter da=new SqlDataAdapter(comm);
   DataSet ds=new DataSet();
   da.Fill(ds);
   //在執(zhí)行完存儲過程之后,可得到輸出參數(shù)
   string myout=comm.Parameters["@output"].Value.ToString();  
   //打印輸出參數(shù):
   Response.Write("打印輸出參數(shù):"+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 過程名 參數(shù)
  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將自動完成數(shù)據(jù)庫的打開和關(guān)閉過程,并執(zhí)行相應(yīng)t-sql語句或存儲過程
  //如果存儲過程只是執(zhí)行相關(guān)操作,如級聯(lián)刪除或更新,使用SqlCommand的execute方法即可。
  SqlDataAdapter da=new SqlDataAdapter(comm);
  DataSet ds=new DataSet();
  da.Fill(ds); 
  //綁定數(shù)據(jù)
  this.DataGrid1.DataSource=ds;
  this.DataGrid1.DataBind(); 
  }

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

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

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

 

【編輯推薦】

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

2012-04-23 15:10:18

ASP.NET

2009-07-21 13:30:59

JSP技術(shù)ASP.NET

2009-07-27 14:33:51

ASP.NET調(diào)用存儲

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-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-29 16:08:07

ASP和ASP.NET

2011-04-29 13:23:11

分頁數(shù)據(jù)存儲

2009-07-27 14:41:33

ASP.NET調(diào)用存儲

2009-07-22 18:03:00

ASP.NET ASP

2015-08-19 14:18:56

SQLasp.net后臺調(diào)用

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-07-28 17:17:19

ASP.NET概述

2009-08-03 14:22:33

什么是ASP.NET

2009-07-27 13:25:15

Postback程序處ASP.NET

2009-11-06 09:23:41

ASP.NET高效分頁
點贊
收藏

51CTO技術(shù)棧公眾號