连接字符串:

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. 没有输入输出的存储过程

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. 有返回值的存储过程

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. 有输入参数和输出参数的存储过程

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. 同时具有返回值、输入参数、输出参数的存储过程

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. 同时返回参数和记录集的存储过程

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. 返回多个记录集的存储过程

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

引用:http://www.cnblogs.com/gc2013/archive/2014/11/25/4119103.html

C#调用存储过程详解的更多相关文章

  1. asp.net调用存储过程详解

    摘要 存储过程的调用在B/S系统中用的很多.传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护.新的方法在一定程度上解决了这些问题. 关键词 ASP.NET:存储过程   在使用 ...

  2. C#调用存储过程详解(带返回值、参数输入输出等)

    CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @studentname nvarchar(50) OUTPUT AS BEGI ...

  3. .net调用存储过程详解(转载)

    本文的数据库用的是sql server 连接字符串 string conn = ConfigurationManager.ConnectionStrings["NorthwindConnec ...

  4. mysql存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

  5. mysql 存储过程详解 存储过程

    mysql存储过程详解 1.      存储过程简介         我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成 ...

  6. MySQL存储过程详解 mysql 存储过程

    原文地址:MySQL存储过程详解  mysql 存储过程作者:王者佳暮 mysql存储过程详解 1.     存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...

  7. MySQL存储过程详解 mysql 存储过程(二)

    mysql存储过程详解 1.      存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...

  8. SqlServer存储过程详解

    SqlServer存储过程详解 1.创建存储过程的基本语法模板: if (exists (select * from sys.objects where name = 'pro_name')) dro ...

  9. mySQL的存储过程详解

    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...

随机推荐

  1. 初步认识mongodb文件

    初步认识mongo. README文件介绍压缩包中各个文件的功能. bin/mongod - MongoDB server bin/mongo - MongoDB client bin/mongodu ...

  2. AIX 第3章 指令记录

    [ssdb01.shz.hn|oracle|/home/oracle]$oslevel -rq  --查看系统已安装的维护级别 Known Recommended Maintenance Levels ...

  3. ORACLE clusterware组成

    oracle cluterware是一个单独的安装包,一旦安装部署好后,每个节点上的oracle cluterware会自动启动,oracle cluterware的运行环境由两个磁盘文件,若干后台进 ...

  4. Android 从java字节码告诉你 为什么Handler会造成内存泄露

    很多人面试的时候,都知道Handler 极易造成内存泄露,但是有一些讲不出来为什么,好一点的 会告诉你looper msg 之类的,但是你再往下问 为什么msg持有handler handler为什么 ...

  5. JS面向对象组件 -- 继承的其他方式(类式继承、原型继承)

    继承的其他形式: •类式继承:利用构造函数(类)继承的方式 •原型继承:借助原型来实现对象继承对象   类 : JS是没有类的概念的 , 把JS中的构造函数看做的类 要做属性和方法继承的时候,要分开继 ...

  6. 在Linux上安装多Jboss个需要修改的端口

    如果在一台机器上部署了多个jboss server,需要修改相关端口以避免端口冲突.目前确认需要修改的配置如下一.vi $JBOSS_HOME/server/default/conf/jboss-se ...

  7. LR之面向目标场景

    1.目标类型 2.设置目标

  8. js正则表达式中=s.g表示什么意思

    //g是全局匹配//中间的内容表示:匹配以=开关,后面是0或多个空格,然后是双引号括起来的任意字符,比如:= "any symble" 匹配 = " asfjaskldf ...

  9. java int和String类型之间的相互转换

    String --> int 第一种方法:int i = Integer.parseInt(s); 第二种方法:int i = Integer.valueOf(s).intValue(); 两种 ...

  10. JS代码的简单重构与优化

    JS代码的简单重构与优化(适合新手) 原文  http://www.cnblogs.com/similar/p/5016424.html Demo . 1 //bad if (age > 20) ...