`

.net调用存储过程详解

 
阅读更多

.net调用存储过程详解

 

连接字符串

  string  conn  =  ConfigurationManager.ConnectionStrings[ " NorthwindConnectionString " ].ConnectionString;

 

confige文件

 

 


     < connectionStrings >
        
< add name = " NorthwindConnectionString "  connectionString = " Data Source=.;Initial Catalog=Northwind;Integrated Security=True "  providerName = " System.Data.SqlClient " />
    
</ connectionStrings >

 

 

1. 只返回单一记录集的存储过程

 

 


     SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        
//  设置sql连接
        cmd.Connection  =  sqlconn;
        
//  如果执行语句
        cmd.CommandText  =   " Categoriestest1 " ;
        
//  指定执行语句为存储过程
        cmd.CommandType  =  CommandType.StoredProcedure;

        SqlDataAdapter dp 
=   new  SqlDataAdapter(cmd);
        DataSet ds 
=   new  DataSet();
        
//  填充dataset
        dp.Fill(ds);
        
//  以下是显示效果
        GridView1.DataSource  =  ds;
        GridView1.DataBind();

 

存储过程Categoriestest1

 


CREATE PROCEDURE Categoriestest1 
AS
select 
*  
from  Categories
GO

 

 2. 没有输入输出的存储过程

c#代码部分

 


       SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();

        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest2 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;
        sqlconn.Open();
        
//  执行并显示影响行数
        Label1.Text  =  cmd.ExecuteNonQuery().ToString();
        sqlconn.Close();

 

 存储过程Categoriestest2

 


CREATE PROCEDURE Categoriestest2  AS
insert into dbo.Categories 
(CategoryName,[Description],[Picture])
values (
' test1 ' , ' test1 ' , null )
GO

 

3. 有返回值的存储过程

c#代码部分

 


SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest3 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;
        
//  创建参数
        IDataParameter[] parameters  =  {
                
new  SqlParameter( " rval " , SqlDbType.Int, 4 )
            };
        
//  将参数类型设置为 返回值类型
        parameters[ 0 ].Direction  =  ParameterDirection.ReturnValue;
        
//  添加参数
        cmd.Parameters.Add(parameters[ 0 ]);

        sqlconn.Open();
        
//  执行存储过程并返回影响的行数
        Label1.Text  =  cmd.ExecuteNonQuery().ToString();
        sqlconn.Close();
        
//  显示影响的行数和返回值
        Label1.Text  +=   " - "   +  parameters[ 0 ].Value.ToString() ;

 

存储过程Categoriestest3

 

 


CREATE PROCEDURE Categoriestest3
AS
insert into dbo.Categories 
(CategoryName,[Description],[Picture])
values (
' test1 ' , ' test1 ' , null )
return  @@rowcount
GO

4. 有输入参数和输出参数的存储过程

c#代码部分

 

 


 SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest4 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;
        
//  创建参数
        IDataParameter[] parameters  =  {
                
new  SqlParameter( " @Id " , SqlDbType.Int, 4 ) ,
                
new  SqlParameter( " @CategoryName " , SqlDbType.NVarChar, 15 ) ,
            };
        
//  设置参数类型
        parameters[ 0 ].Direction  =  ParameterDirection.Output;   //  设置为输出参数
        parameters[ 1 ].Value  =   " testCategoryName " ;
        
//  添加参数
        cmd.Parameters.Add(parameters[ 0 ]);
        cmd.Parameters.Add(parameters[
1 ]);

        sqlconn.Open();
        
//  执行存储过程并返回影响的行数
        Label1.Text  =  cmd.ExecuteNonQuery().ToString();
        sqlconn.Close();
        
//  显示影响的行数和输出参数
        Label1.Text  +=   " - "   +  parameters[ 0 ].Value.ToString() ;

存储过程Categoriestest4       

 


CREATE PROCEDURE Categoriestest4
@id 
int  output,
@CategoryName nvarchar(
15 )
AS
insert into dbo.Categories 
(CategoryName,[Description],[Picture])
values (@CategoryName,
' test1 ' , null )
set   @id  =  @@IDENTITY
GO

 

5. 同时具有返回值、输入参数、输出参数的存储过程

c#代码部分

 


 SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest5 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;
        
//  创建参数
        IDataParameter[] parameters  =  {
                
new  SqlParameter( " @Id " , SqlDbType.Int, 4 ) ,
                
new  SqlParameter( " @CategoryName " , SqlDbType.NVarChar, 15 ) ,
                
new  SqlParameter( " rval " , SqlDbType.Int, 4 )
            };
        
//  设置参数类型
        parameters[ 0 ].Direction  =  ParameterDirection.Output;        //  设置为输出参数
        parameters[ 1 ].Value  =   " testCategoryName " ;                   //  给输入参数赋值
        parameters[ 2 ].Direction  =  ParameterDirection.ReturnValue;   //  设置为返回值
        
//  添加参数
        cmd.Parameters.Add(parameters[ 0 ]);
        cmd.Parameters.Add(parameters[
1 ]);
        cmd.Parameters.Add(parameters[
2 ]);

        sqlconn.Open();
        
//  执行存储过程并返回影响的行数
        Label1.Text  =  cmd.ExecuteNonQuery().ToString();
        sqlconn.Close();
        
//  显示影响的行数,输出参数和返回值
        Label1.Text  +=   " - "   +  parameters[ 0 ].Value.ToString()  +   " - "   +  parameters[ 2 ].Value.ToString();

 

 

 存储过程Categoriestest5

 


CREATE PROCEDURE Categoriestest5
@id 
int  output,
@CategoryName nvarchar(
15 )
AS
insert into dbo.Categories 
(CategoryName,[Description],[Picture])
values (@CategoryName,
' test1 ' , null )
set   @id  =  @@IDENTITY
return  @@rowcount
GO

 

 6. 同时返回参数和记录集的存储过程

c#代码部分

 


        SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest6 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;
        
//  创建参数
        IDataParameter[] parameters  =  {
                
new  SqlParameter( " @Id " , SqlDbType.Int, 4 ) ,
                
new  SqlParameter( " @CategoryName " , SqlDbType.NVarChar, 15 ) ,
                
new  SqlParameter( " rval " , SqlDbType.Int, 4 )                    //  返回值
            };
        
//  设置参数类型
        parameters[ 0 ].Direction  =  ParameterDirection.Output;         //  设置为输出参数
        parameters[ 1 ].Value  =   " testCategoryName " ;                    //  给输入参数赋值
        parameters[ 2 ].Direction  =  ParameterDirection.ReturnValue;    //  设置为返回值
        
//  添加参数
        cmd.Parameters.Add(parameters[ 0 ]);
        cmd.Parameters.Add(parameters[
1 ]);
        cmd.Parameters.Add(parameters[
2 ]);

        SqlDataAdapter dp 
=   new  SqlDataAdapter(cmd);
        DataSet ds 
=   new  DataSet();
        
//  填充dataset
        dp.Fill(ds);
        
//  显示结果集
        GridView1.DataSource  =  ds.Tables[ 0 ];
        GridView1.DataBind();

        Label1.Text 
=   "" ;
        
//  显示输出参数和返回值
        Label1.Text  +=   parameters[ 0 ].Value.ToString()  +   " - "   +  parameters[ 2 ].Value.ToString();

 

存储过程Categoriestest6

 


CREATE PROCEDURE Categoriestest6
@id 
int  output,
@CategoryName nvarchar(
15 )
AS
insert into dbo.Categories 
(CategoryName,[Description],[Picture])
values (@CategoryName,
' test1 ' , null )
set   @id  =  @@IDENTITY
select 
*  from Categories
return  @@rowcount
GO

 

7. 返回多个记录集的存储过程

 c#代码部分

 


     SqlConnection sqlconn  =   new  SqlConnection(conn);
        SqlCommand cmd 
=   new  SqlCommand();
        
        cmd.Connection 
=  sqlconn;
        cmd.CommandText 
=   " Categoriestest7 " ;
        cmd.CommandType 
=  CommandType.StoredProcedure;

        SqlDataAdapter dp 
=   new  SqlDataAdapter(cmd);
        DataSet ds 
=   new  DataSet();
        
//  填充dataset
        dp.Fill(ds);
        
//  显示结果集1
        GridView1.DataSource  =  ds.Tables[ 0 ];
        GridView1.DataBind();
        
//  显示结果集2
        GridView2.DataSource  =  ds.Tables[ 1 ];
        GridView2.DataBind();

 

存储过程Categoriestest7

 


CREATE PROCEDURE Categoriestest7
AS
select 
*  from Categories
select 
*  from Categories
GO
分享到:
评论

相关推荐

    net调用存储过程详解

    ### .NET调用存储过程详解 #### 一、概述 在.NET框架中,通过ADO.NET可以轻松地实现对SQL Server数据库中的存储过程进行调用。本文将以SQL Server自带的Northwind数据库为例,详细介绍如何在.NET应用程序中调用...

    C#.NET使用存储过程

    ### C#.NET 使用存储过程详解 #### 一、概述 在C#.NET开发中,存储过程是一种非常重要的数据库操作方式。存储过程可以提高应用程序的性能和安全性,同时还能简化复杂查询的操作。本文将详细介绍如何在C#.NET项目中...

    ASP.NET结合存储过程写的通用搜索分页程序

    随后,通过`SqlConnection`和`SqlCommand`对象连接到数据库并调用存储过程“up_GetTopicList”。存储过程被设置为`CommandType.StoredProcedure`类型,表明我们正在调用预编译的存储过程。 在参数设置部分,可以...

    .NET中存储过程的使用

    ##### 使用C#调用存储过程添加信息示例 ```csharp public int Add_aboutUSNews(int aboutUsType, string aboutUsTitle, string aboutUsContent, string aboutUsEditor, DateTime aboutUsUpDateTime) { int return...

    ASP.NET分页存储过程

    ### ASP.NET分页存储过程详解 #### 一、引言 在Web开发中,特别是涉及到大量数据展示的应用场景中,为了提升用户体验并减轻服务器压力,通常会采用分页技术来展示数据。其中一种常见的实现方式就是通过数据库的...

    ASP.NET存储过程自定义分页详解

    调用存储过程 在ASP.NET应用程序中,可以通过ADO.NET连接数据库并调用上述存储过程。以下是一个简单的示例代码: ```csharp using System.Data.SqlClient; // 连接数据库 SqlConnection connection = new ...

    ASP.NET生命周期图片详解

    ASP.NET生命周期是Web开发中的核心概念,它详细描述了从客户端请求到服务器响应的整个过程。这个生命周期包括多个阶段,每个阶段都有特定的任务和事件,理解这些阶段对于优化和调试ASP.NET应用程序至关重要。 首先...

    hibernate调用存储过程

    ### Hibernate调用存储过程详解 在企业级应用开发中,Hibernate作为一款优秀的对象关系映射(ORM)框架,被广泛应用于Java持久层解决方案。而存储过程作为一种预编译的SQL代码块,在数据库层面执行,提供了高性能的...

    .net元搜索引擎详解

    ### .NET元搜索引擎详解 #### 一、引言 随着互联网技术的快速发展,网络信息资源呈爆炸性增长态势。为了高效地从海量信息中获取所需数据,搜索引擎成为了必不可少的工具。传统的综合搜索引擎虽然覆盖范围广,但在...

    ASP.NET与EXCEL交互详解及技巧

    在许多业务场景中,数据处理和报告生成是必不可少的部分,而Excel因其强大的表格处理能力,常被用作数据存储和分析的工具。本篇文章将深入探讨ASP.NET如何与Excel进行交互,以及一些实用的技巧。 首先,ASP.NET通过...

    C#调用存储过程的通用类

    ### C#调用存储过程的通用类 #### 概述 在C#开发中,经常需要与数据库进行交互,其中一个常见的需求就是通过调用数据库中的存储过程来执行复杂的查询或更新操作。本篇将详细介绍一个C#通用类,用于简化调用SQL ...

    ASP.NET Forms身份认证详解

    *** Forms身份认证是一种在.NET平台上用于Web应用程序的身份验证机制。它允许开发者在客户端维护用户的登录状态,而无需在服务器上存储用户的认证信息。这种认证方式非常适合于基于Web表单的交互场景。 在*** Forms...

    c#调用存储过程

    ### C# 调用存储过程详解 #### 一、背景介绍 在现代软件开发过程中,数据库操作是非常重要的一部分。为了提高数据访问层的性能、安全性和可维护性,存储过程成为了开发人员常用的一种手段。存储过程是预编译好的...

    ASPNET存储过程自定义分页详解

    在ASP.NET中,通过C#代码调用存储过程,能够更好地控制和管理数据库操作。 在分页场景下,我们通常需要考虑两个关键参数:当前页数和每页显示的记录数。存储过程可以接收这两个参数,并返回指定页范围内的数据。...

    asp.net三层架构详解

    例如,`SQLServerDAL`中可能有`SqlHelper.cs`和`Content.cs`文件,包含了执行SQL查询和存储过程的方法,如`ExecuteReader()`、`PrepareCommand()`以及`GetContentInfo(int id)`的实现。DALFactory根据配置信息(通常...

    C# 调用存储过程的后台代码

    ### C#调用存储过程的后台代码详解 在软件开发过程中,存储过程是数据库中预编译好的SQL脚本集合,它可以接收输入参数并返回输出结果。存储过程因其执行效率高、可重用性强等特点而被广泛应用于各种业务场景之中。...

    存储过程调用.doc

    - 在.NET框架下,利用ADO.NET进行数据库操作时,可以通过SqlCommand对象来调用存储过程,实现复杂的数据处理逻辑。 #### 二、内容和步骤详解 ##### 1. 统计安徽省各地区的总面积 - **创建存储过程** `exp1`: - ...

    【ASP.NET编程知识】详解ASP.NET页面生命周期.docx

    ASP.NET页面生命周期是ASP.NET Web Forms开发中的核心概念,它描述了一个ASP.NET页面从请求开始到响应返回给客户端的整个过程。在这个过程中,页面会经历一系列的阶段,每个阶段都有其特定的任务和目的,允许开发者...

    c# 调用带参数的存储过程

    调用存储过程并获取结果 ```csharp dtDifferTime = SqlHelper.RunProceduresByParameter("pro_GetDifferenceTimeInfos", iDataDi); ``` 调用了`SqlHelper`类中的静态方法`RunProceduresByParameter`,该方法接收...

    【ASP.NET编程知识】ASP.NET Forms身份认证详解.docx

    ASP.NET Forms身份认证是ASP.NET框架中用于管理用户身份验证的一种机制。在开始深入探讨之前,我们需要理解两个关键概念:认证和授权。 1. **认证**:认证是确定用户身份的过程。在ASP.NET中,当`Request....

Global site tag (gtag.js) - Google Analytics