在。net中调用存储过程的方法(转)

ltxyxj 2008-01-08 10:53:44
以SQL Server自带的Authors数据库给你详解一下如何在ASP.Net使用存储过程:

  1、创建一个SQL存储过程,其中包含要执行的语句。

  2、导入System.Data命名空间。

  3、把存储过程名称传递给SqlCommand类的实例。

  4、把SqlCommand类的CommandType属性设置为CommandType.StoredProcedure值。


  其中第一步实际上就是创建SQL存储过程。可以使用Microsoft SQL Server企业管理器(Enterprise

Manager)或查询分析器(Query Analyzer)来创建存储过程。比如,可以使用查询分析器。

  要运行Query Analyzer,则点击“开始”->“程序”->“Microsoft SQL Server”,然后点击“查询

分析器”,并从下拉列表框中选择需要在其中创建存储过程的数据库。

  接着,在查询分析器的查询窗口中输入如下语句:

  Create Procedure InsertProducts
  (
    @produectName Nvarchar(80)
    @UnitPrice Money
  )
  As
  Insert Produects (ProduectName, UnitPrice)
  Values(@ProductName, @UnitPrice)

  在输入上述语句后,点击“Execute Query”按钮来执行语句并创建一个名为InsertProduects的新存

储过程。

  InsertProducts存储过程具有两个输入参数,名为@ProductName和@UnitPirece。@ProductName参数

定义为NVartchar类型,其最大长度为80个字符。@UnitPrice参数定义为Money类型。

  存储过程的主体定义在As关键字后面。InsertProducts存储过程使用两个参数简单地执行SQL Insert

语句。

  以下面这段程序执行InsertProducts存储过程:

<%@ Page Language="C#"%>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>

<script runat=server>

void Page_Load(Object sender , EventArgs e)
{
SqlConnection conNorthwind;
string strInsert;
SqlCommand cmdInsert;

conNorthwind = new SqlConnection( @"Server=localhost;Integrated

Security=SSPI;database=Northwind" );
cmdInsert = new SqlCommand( "InsertProducts", conNorthwind );
cmdInsert.CommandType = CommandType.StoredProcedure;
cmdInsert.Parameters.Add( "@ProductName", "Milk" );
cmdInsert.Parameters.Add( "@UnitPrice", 12.45 );
conNorthwind.Open();
cmdInsert.ExecuteNonQuery();
conNorthwind.Close();
Response.Write("New Product Added!");
}
</script>

  首先,注意在页面中第二行代码是导入System.Data命名空间。导入System.Data命名空间的目的是为

了随后在页面中使用CommandType枚举类型。

  接着,在初始化SqlCommand类时,传递了存储过程名称InsertProduct。当执行此命令时,就会执行

该存储过程。

  最后,把SqlCommand类的CommandType属性设为CommandType.StoredProcedure值。设置CommandType

是为了让命令解析作为存储过程名称解析,而不是作为标准的SQL语句来解析(CommandType的默认值是

Text)。

  也可以在执行SQL Select语句和DataReader查询时使用存储过程。其操作步骤一样。比如,程序页面

显示Authors数据库表中所有记录的au_lname列的值。

  如下程序执行查询时使用存储过程:

<%@ Page Language="C#"%>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Data" %>

<script runat=server>

void Page_Load(Object sender , EventArgs e)
{
SqlConnection conPubs;
SqlCommand cmdSelect;
SqlDataReader dtrAuthors;

conPubs = new SqlConnection( @"Server=localhost;Integrated

Security=SSPI;database=pubs" );
cmdSelect = new SqlCommand( "SelectAuthors", conPubs );
cmdSelect.CommandType = CommandType.StoredProcedure;
conPubs.Open();
dtrAuthors = cmdSelect.ExecuteReader();
while ( dtrAuthors.Read()) {
Response.Write( "<li>" );
Response.Write( dtrAuthors[ "au_lname" ] );
}
dtrAuthors.Close();
conPubs.Close();
}
</script>

  程序页面执行了一个名为SelectAuthors的存储过程。该存储过程是在调用ExecuteReader()方法时执行。

  这个SelectAuthors存储过程不带任何参数。它只是简单地返回Authors数据表中的所有作者的姓。

  SelectAuthors存储过程可以由如下语句创建:

  Create Procedure SelectAuthors
  As
  Select au_lname From Authors
...全文
54 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
panxunmiao1 2011-10-09
  • 打赏
  • 举报
回复
顶,有用
eyesinbook 2008-01-08
  • 打赏
  • 举报
回复
转走了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧