步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除...

[索引页]
[源码下载]


步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除


作者: webabcd


介绍
以Northwind为 示例数据库 ,DLINQ(LINQ to SQL)之调用指定存储过程的添加操作、查询操作、更新操作和删除操作


示例
相关的存储过程
ALTER PROCEDURE [dbo].[spInsertCategory] 
        @CategoryName nvarchar(15), 
        @Description ntext, 
        @CategoryID int OUTPUT 
AS 

SET NOCOUNT ON 

INSERT INTO [dbo].[Categories] ( 
        [CategoryName], 
        [Description] 
) VALUES ( 
        @CategoryName, 
        @Description 


SET @CategoryID = SCOPE_IDENTITY() 

RETURN @@ERROR
 
ALTER PROCEDURE [dbo].[spUpdateCategory] 
        @CategoryID int, 
        @CategoryName nvarchar(15), 
        @Description ntext 
AS 

SET NOCOUNT ON 

UPDATE [dbo].[Categories] SET 
        [CategoryName] = @CategoryName, 
        [Description] = @Description 
WHERE 
        [CategoryID] = @CategoryID 
         
RETURN @@ERROR
 
ALTER PROCEDURE [dbo].[spDeleteCategory] 
        @CategoryID int 
AS 

SET NOCOUNT ON 

DELETE FROM [dbo].[Categories] 
WHERE 
        [CategoryID] = @CategoryID 
         
RETURN @@ERROR
 
ALTER PROCEDURE [dbo].[spSelectCategory] 
        @CategoryID int = null 
AS 

SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED 

SELECT 
        [CategoryID], 
        [CategoryName], 
        [Description], 
        [Picture] 
FROM 
        [dbo].[Categories] 
WHERE 
        @CategoryID IS NULL OR [CategoryID] = @CategoryID
 
ALTER PROCEDURE [dbo].[spSelectProduct] 
        @ProductID int = null 
AS 

SET NOCOUNT ON 
SET TRANSACTION ISOLATION LEVEL READ COMMITTED 

SELECT 
        [ProductID], 
        [ProductName], 
        [SupplierID], 
        [CategoryID], 
        [QuantityPerUnit], 
        [UnitPrice], 
        [UnitsInStock], 
        [UnitsOnOrder], 
        [ReorderLevel], 
        [Discontinued] 
FROM 
        [dbo].[Products] 
WHERE 
        @ProductID IS NULL OR [ProductID] = @ProductID
 
SP.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="SP.aspx.cs" 
        Inherits="LINQ_DLINQ_SP" Title="调用存储过程的添加、查询、更新和删除" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
        <p> 
                分类名称:<asp:TextBox ID="txtCategoryName" runat="server"></asp:TextBox> 
                   分类描述:<asp:TextBox ID="txtDescription" runat="server"></asp:TextBox> 
                   
                <asp:Button ID="btnAdd" runat="server" Text="添加" OnClick="btnAdd_Click" /> 
        </p> 
        <asp:GridView ID="gvCategory" runat="server" DataKeyNames="CategoryID" OnSelectedIndexChanged="gvCategory_SelectedIndexChanged" 
                OnRowDeleting="gvCategory_RowDeleting" OnRowCancelingEdit="gvCategory_RowCancelingEdit" 
                OnRowEditing="gvCategory_RowEditing" OnRowUpdating="gvCategory_RowUpdating"> 
                <Columns> 
                        <asp:CommandField ShowSelectButton="True" ShowEditButton="True" ShowDeleteButton="True"> 
                        </asp:CommandField> 
                </Columns> 
        </asp:GridView> 
        <br /> 
        <asp:DetailsView ID="dvProduct" runat="server" DataKeyNames="ProductID"> 
        </asp:DetailsView> 
</asp:Content>
SP.aspx.cs
InBlock.gif using System; 
InBlock.gif using System.Data; 
InBlock.gif using System.Configuration; 
InBlock.gif using System.Collections; 
InBlock.gif using System.Linq; 
InBlock.gif using System.Web; 
InBlock.gif using System.Web.Security; 
InBlock.gif using System.Web.UI; 
InBlock.gif using System.Web.UI.WebControls; 
InBlock.gif using System.Web.UI.WebControls.WebParts; 
InBlock.gif using System.Web.UI.HtmlControls; 
InBlock.gif using System.Xml.Linq; 
InBlock.gif 
InBlock.gif using DAL; 
InBlock.gif 
InBlock.gif public partial  class LINQ_DLINQ_SP : System.Web.UI.Page 
InBlock.gif
InBlock.gif         // 实例化一个NorthwindDataContext(DataContext) 
InBlock.gif         // 在对象关系设计器(Object Relational Designer)中拖进来存储过程,同时NorthwindDataContext类中就会自动生成调用相应存储过程的相应方法 
InBlock.gif        NorthwindDataContext _ctx =  new NorthwindDataContext(); 
InBlock.gif 
InBlock.gif         protected  void Page_Load( object sender, EventArgs e) 
InBlock.gif        { 
InBlock.gif                 if (!Page.IsPostBack) 
InBlock.gif                { 
InBlock.gif                        BindCategory(); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         private  void BindCategory() 
InBlock.gif        { 
InBlock.gif                var categories = _ctx.GetCategory( null); 
InBlock.gif 
InBlock.gif                gvCategory.DataSource = categories; 
InBlock.gif                gvCategory.DataBind(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void btnAdd_Click( object sender, EventArgs e) 
InBlock.gif        { 
InBlock.gif                 // categoryId - 用于获取存储过程的输出值(output) 
InBlock.gif                 int? categoryId =  null
InBlock.gif                 // rtn - 用于获取存储过程的返回值(return) 
InBlock.gif                 int rtn = _ctx.AddCategory(txtCategoryName.Text, txtDescription.Text,  ref categoryId); 
InBlock.gif 
InBlock.gif                Page.ClientScript.RegisterStartupScript( 
InBlock.gif                         this.GetType(), 
InBlock.gif                         "js"
InBlock.gif                         string.Format( "alert('output:{0},return:{1}')", categoryId.ToString(), rtn.ToString()), 
InBlock.gif                         true); 
InBlock.gif 
InBlock.gif                gvCategory.EditIndex = -1; 
InBlock.gif                BindCategory(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void gvCategory_SelectedIndexChanged( object sender, EventArgs e) 
InBlock.gif        { 
InBlock.gif                var products = _ctx.GetProduct(( int)gvCategory.SelectedValue); 
InBlock.gif 
InBlock.gif                dvProduct.DataSource = products; 
InBlock.gif                dvProduct.DataBind(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void gvCategory_RowDeleting( object sender, GridViewDeleteEventArgs e) 
InBlock.gif        { 
InBlock.gif                 // rtn - 用于获取存储过程的返回值(return) 
InBlock.gif                 int rtn = _ctx.DeleteCategory(( int)gvCategory.DataKeys[e.RowIndex].Value); 
InBlock.gif 
InBlock.gif                Page.ClientScript.RegisterStartupScript( 
InBlock.gif                         this.GetType(), 
InBlock.gif                         "js"
InBlock.gif                         string.Format( "alert('return:{0}')", rtn.ToString()), 
InBlock.gif                         true); 
InBlock.gif 
InBlock.gif                gvCategory.EditIndex = -1; 
InBlock.gif                BindCategory(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void gvCategory_RowUpdating( object sender, GridViewUpdateEventArgs e) 
InBlock.gif        { 
InBlock.gif                 // rtn - 用于获取存储过程的返回值(return) 
InBlock.gif                 int rtn = _ctx.UpdateCategory( 
InBlock.gif                        ( int)gvCategory.DataKeys[e.RowIndex].Value, 
InBlock.gif                        ((TextBox)gvCategory.Rows[e.RowIndex].Cells[2].Controls[0]).Text, 
InBlock.gif                        ((TextBox)gvCategory.Rows[e.RowIndex].Cells[3].Controls[0]).Text); 
InBlock.gif 
InBlock.gif                Page.ClientScript.RegisterStartupScript( 
InBlock.gif                         this.GetType(), 
InBlock.gif                         "js"
InBlock.gif                         string.Format( "alert('return:{0}')", rtn.ToString()), 
InBlock.gif                         true); 
InBlock.gif 
InBlock.gif                gvCategory.EditIndex = -1; 
InBlock.gif                BindCategory(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void gvCategory_RowEditing( object sender, GridViewEditEventArgs e) 
InBlock.gif        { 
InBlock.gif                gvCategory.EditIndex = e.NewEditIndex; 
InBlock.gif                BindCategory(); 
InBlock.gif        } 
InBlock.gif 
InBlock.gif         protected  void gvCategory_RowCancelingEdit( object sender, GridViewCancelEditEventArgs e) 
InBlock.gif        { 
InBlock.gif                gvCategory.EditIndex = -1; 
InBlock.gif                BindCategory(); 
InBlock.gif        } 
InBlock.gif}
 




     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/345010 ,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值