.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

(0)

相关推荐

  • asp.net sql存储过程

    Visual Studio.Net为SQL的存储过程提供了强大的支持,您既可以通过visual studio.net来新建存储过程,也可以直接在Sql Server的查询分析器中运行,还可以通过企业管理器创建,使用起来也非常方便.大家一直都误认为SQL存储过程是一个比较"高深"的技术,其实掌握一般的语法是没有什么大问题的,而我们在使用存储教程中也主要是增删减的操作,学会使用一般的T-SQL就很容易上手了. 我们先来看一下在Sql-server中是如何创建一个存储过程的吧,我们可以使用S

  • asp.net安全、实用、简单的大容量存储过程分页第1/2页

    基本上我下面要讲述的侧重点是如何使用,因为其实分页存储过程网上很多,如果你懒得找,那么可以直接使用下面这个我经过测试,并通过修改,网上评价都比较高的分页存储过程. 这个分页主要优点如下: 1.大容量下的数据分页,我的测试数据是520W. 2.我结合aspnetpager控件,使得使用起来更加方便. 3.为了结构清晰,实用3层. 4.安全,你就放心的用吧.SQL注入的问题在这里你可以放心了.网上有文章说只要存储过程是用sql拼接的就存在sql注入的问题,并且直接在sql查询分析器中测试了注入的情况

  • asp.net 存储过程调用

    1.调用存储过程,但无返回值 复制代码 代码如下: Private Function SqlProc1(ByVal ProcName As String) As Boolean '定义数据链接部分省略, myConn为链接对象 ProcName为存储过程名 Dim myCommand As New SqlClient.SqlCommand(ProcName, myConn) With myCommand .CommandType = CommandType.StoredProcedure .Pa

  • ASP.NET Core Project.json文件(5)

    如果您的应用程序要做任何有用的工作,然后你需要库和框架来完成工作,这种存储和检索数据从一个数据库或呈现复杂的HTML. 在这一章,我们将讨论 project.json 文件.此文件使用 JavaScript 对象符号来存储配置信息,它是.NET 应用程序的核心.如果没有这个文件,你的项目就不会一个 ASP.NET Core项目.在这里,我们将讨论这个文件的一些最重要的特征.让我们双击 project.json 文件打开它. 目前,新建的项目中默认实现的project.json文件代码如下: {

  • asp.net 结合mysql存储过程进行分页代码

    不过在网上找了一些,发现都有一个特点--就是不能传出总记录数,干脆自己研究吧.终于,算是搞出来了,效率可能不是很好,但是我也觉得不错了.贴代码吧直接:也算是对自己学习mysql的一个记录. 复制代码 代码如下: CREATE PROCEDURE p_pageList ( m_pageNo int , m_perPageCnt int , m_column varchar(1000) , m_table varchar(1000) , m_condition varchar(1000), m_or

  • 在ASP.NET中用存储过程执行SQL语句

    存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 复制代码 代码如下: create procedure procNewsSelectNewNews as begin select top 10 n.id,n.title,n.createTime,c.name from news n inner join category c on n.caId=c.id order by n.createT

  • .Net下二进制形式的文件(图片)的存储与读取详细解析

    .Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: 复制代码 代码如下: public byte[] GetPictureData(string imagepath)        {            ////根据图片文件的路径使用文件流打开,并保存为byte[]               FileStream fs =

  • .net调用存储过程详细介绍

    连接字符串 复制代码 代码如下: string conn = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString; confige文件  复制代码 代码如下: <connectionStrings>        <add name="NorthwindConnectionString" connectionString="

  • SpringCloud Gateway DispatcherHandler调用方法详细介绍

    目录 前言 DispatcherHandler类声明 handle方法 最后总结一下 前言 之前几节我们分析了请求是如何调用到HttpWebHandlerAdapter的,然后再调用到DispatcherHandler中,通过handle方法来处理具体的请求. DispatcherHandler的注入在自动装配那一节已经说过了,忘记的同学可以重新会看一下. DispatcherHandler类声明 public class DispatcherHandler implements WebHand

  • SpringCloud使用Feign实现远程调用流程详细介绍

    目录 前言 1. 导入依赖坐标 2. 开启Feign自动装配 3. 声明远程调用 4. 替代RestTemplate 5. 测试 前言 本次示例代码的文件结构如下图所示. 1. 导入依赖坐标 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标. <!-- Feign远程调用客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifa

  • oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)

    oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命名的方式存储于数据库中的.和PL/SQL程序相比,存储过程有很多优点,具体归纳如下: * 存储过程和函数以命名的数据库对象形式存储于数据库当中.存储在数据库中的优点是很明显的,因为代码不保存在本地,用户

  • 从java中调用matlab详细介绍

    前段时间摸索了java调用matlab东西,不说学的有多深,也算有结果了,达到目的了.也即用java程序可以调用matlab中函数了. 按顺序说吧,最开始肯定是下个matlab看看.下哪一个呢.开始下一个7.0觉得很新了.后来才觉得不是,现在都有7.8了.同时网上还流传着另外一种版本号信息,即2006版. 2006a版.2008b版,后来从网上找资料才知道,原来,matlab是一年两版的,叫a版和b 版.比如MATLAB 7.2 (Release 2006a),我下的是m7.8即2009a版.网

  • 基于存储过程的详细介绍

    存储过程简介 --------------------------------------------------------------------------------什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了. 存储过程的好处: 1.由于数据库执行动作时,是先编译后执行的.然而存储过程是一个编译过的代码块,所以

  • C++ 封装 DLL 供 C# 调用详细介绍

    目录 1.VLC代码封装 1.1 QT(C++)工程 1.2static 声明 m_instance 优化效率 1.3封装 DLL 1.4应用程序的导出函数 1.5 vlc 简单封装的具体实现 2.C# 调用 2.1C# 回调函数声明与定义 2.2C# 导出普通函数调用 1.VLC代码封装 1.1 QT(C++)工程 首先需要配置可使用 VLC 正常播放的 QT(C++)工程,获取VLC每一帧并渲染到Qwidget Libvlcapi public static class LIBVLCAPI

  • Spring事务传播中嵌套调用实现方法详细介绍

    目录 前言 7种传播方式 注解式事务 事务的方法之间的调用 注意事项 前言 最近在使用Spring框架时遇到了一些问题,主要是Spring的事务传播问题,一个不带事务的方法调用带事务的方法,有时候会出现不回滚的情况,所以写了这篇文章来记录一下. 7种传播方式 我们先来看Spring事务的7中传播方式以及对应的描述 属性名称 值 描述 PROPAGATION__REQUIRED REQUIRED 表示的是当前这个方法必须运行在一个事务环境中,如果当前方法已经处于事务环境中,就可以直接使用该方法,否

  • oracle 虚拟专用数据库详细介绍

    所谓虚拟专用数据库(VPD)指的是,通过在数据库里进行配置,从而让不同的用户只能查看某个表里的部分数据.VPD分为以下两个级别. 行级别:在该级别下,可以控制某些用户只能查看到某些数据行.比如,对于销售数据表sales 来说,每个销售人员只能检索出他自己的销售数据,不能查询其他销售人员的销售数据. 列级别:在该级别下,可以控制某些用户不能检索某个表的某个列的值.比如用户HR 下的 employees 表中,含有工资(salary)列,由于该列比较敏感,因此不让其他用户查询该列的值. 其他用户检索

  • Java连接数据库JDBC技术之prepareStatement的详细介绍

    一.prepareStatement 的用法和解释 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象.在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理.PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处. 3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, p

随机推荐