|
首先创建存储过程,格式如下:
CREAT PROCEDURE sp_CustomersByState @region nvarchar(15) AS select CustomerID,CompanyName from Customers where region=@region Order by CompanyName RETURN |
编写程序代码:
在C#代码中,我们将使用新的类,System.Data.SqlClient.Parameter。该类的对象设计用于表示存储过程中的参数,因此构造函数需要知道名称、数据类型和所讨论的参数的大小。
<%@ Import namespace="System.Data" %> <%@ Import namespace="System.Data.SqlClient" %>
<html> <head><title>Using Stored Procedures With Parameters</title></head> <body> <form runat="server" method="post"> Enter a State Code: <asp:Textbox id="txtRegion" runat="server" /> <asp:Button id="BTnSubmit" runat="server" Text="Search" OnClick="Submit" /> <br/><br/> <asp:DataGrid id="dgOutput" runat="server" /> </form> </body> </html>
<script language="c#" runat="server"> private void Submit(object sender, EventArgs e) { String strConnection ="Server=224NUMECA;database=Northwind;user id=sa;passWord=sa"; SqlConnection objConnection = new SqlConnection(strConnection); SqlCommand objCommand = new SqlCommand("sp_CustomersByState", objConnection); objCommand.CommandType = CommandType.StoredProcedure;
SqlParameter objParameter = new SqlParameter("@region", SqlDbType.NVarChar, 15);
/* 新建名为@region并声明为nvchar(15)的参数,它与存储过程中的声明相匹配。该版本的构造函数的第二个参数总是system.data.sqlDbType枚举的成员,该枚举有24个成员,表示您可能需要的所有数据类型的。*/
objCommand.Parameters.Add(objParameter);
/* 第二行将参数添加到命令对象的Parameter集合,经常会忘记该操作 */
objParameter.Direction = ParameterDirection.Input;
/* 设置参数对象的Direction属性,以决定它是否会用于将信息传递给存储过程,或接收来自它的信息。ParameterDirection.Input实际上就是该属性的默认值,但是从维护和可读性的观点出发,将它放入代码中是很有帮助的。 */
objParameter.Value = txtRegion.Text;
/* 我们将参数的value属性设置为TxtRegion文本框的文本属性。 */
objConnection.Open(); objConnection.Open();
dgOutput.DataSource = objCommand.ExecuteReader(); dgOutput.DataBind();
objConnection.Close(); } </script>
|
|