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

开发者社区> 技术小胖子> 正文

步步为营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.gifusing System; 
InBlock.gifusing System.Data; 
InBlock.gifusing System.Configuration; 
InBlock.gifusing System.Collections; 
InBlock.gifusing System.Linq; 
InBlock.gifusing System.Web; 
InBlock.gifusing System.Web.Security; 
InBlock.gifusing System.Web.UI; 
InBlock.gifusing System.Web.UI.WebControls; 
InBlock.gifusing System.Web.UI.WebControls.WebParts; 
InBlock.gifusing System.Web.UI.HtmlControls; 
InBlock.gifusing System.Xml.Linq; 
InBlock.gif 
InBlock.gifusing DAL; 
InBlock.gif 
InBlock.gifpublic 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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
duilib 修复CTreeViewUI控件动态添加子控件时,对是否显示判断不足的bug
转载请说明出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42264947         这个bug我在仿酷狗开发日志里提到过,不过后来发现修复的不够好,后来重新修改了代码,并记录到博客。
1155 0
Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中]
原文:Asp.Net Web API 2 官网菜鸟学习系列导航[持续更新中] 前言 本来一直参见于微软官网进行学习的, 官网网址http://www.asp.net/web-api。出于自己想锻炼一下学习阅读英文文章的目的,又可以学习下微软新发布的技术,其实也很久了,但自己菜鸟一枚,对自己来说都是新技术了。
1349 0
世界最危险恶意软件Vawtrak可通过收藏夹小图标更新
本文讲的是世界最危险恶意软件Vawtrak可通过收藏夹小图标更新,号称世界上最危险的恶意软件之一Vawtrak,现在可以使用浏览器收藏夹中的小图标(favicon)发送和接收数据。
1184 0
.NET 云原生架构师训练营(模块二 基础巩固 MongoDB 更新和删除)--学习笔记
- 整体更新 - 更新字段 - 字段操作 - 数组操作 - 删除
80 0
QuickPager asp.net 分页控件、表单控件等自定义控件下载 和介绍 【2009.09.07更新】
  最新下载地址: 自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新)     QuickControl web控件集包含的控件 QuickControl web控件集——基本控件: 控件名称 说明 详细介绍 MyTextBox ...
961 0
开发者论坛一周精粹(第十二期):如何通过快照的瘦身和删除来节省储存费用
阿里云快照的帮助文档里面有一篇《删除快照和自动快照策略》,其实可以通过这个引导来达到节省费用的目的。 当您不再需要某个快照、或者快照个数超出额度的时候,您需要删除一部分快照释放空间。
2365 0
21119
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载