CREATE PROCEDURE [dbo].[GetNameById]

@studentid varchar(8),

@studentname nvarchar(50) OUTPUT

AS

BEGIN

SELECT @studentname=studentname FROM student

WHERE studentid=@studentid

if @@Error<>0

RETURN -1

else 

RETURN 0 

END

 

 

using (SqlConnection conn = new SqlConnection(connStr))

{

try

{

SqlCommand cmd = new SqlCommand("GetNameById", conn);

cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@studentid", "09888888");  //给输入参数赋值

SqlParameter parOutput =cmd.Parameters.Add("@studentname", SqlDbType.NVarChar, 50);  //定义输出参数

parOutput.Direction = ParameterDirection.Output;  //参数类型为Output

SqlParameter parReturn = new SqlParameter("@return", SqlDbType.Int);

parReturn.Direction = ParameterDirection.ReturnValue;   //参数类型为ReturnValue 

cmd.Parameters.Add(parReturn);

conn.Open();

cmd.ExecuteNonQuery();

MessageBox.Show(parOutput.Value.ToString()); //显示输出参数的值

MessageBox.Show(parReturn.Value.ToString());  //显示返回值

}

catch (System.Exception ex)

{

MessageBox.Show(ex.Message);

}

}

 

 

Create PROCEDURE AddOrderTran

@country nvarchar(100),

@adds nvarchar(100),

@ynames nvarchar(100),

@pids nvarchar(100),

@cellp nvarchar(100),

@cphone nvarchar(100),

@amounts nvarchar(100),

@cartnumber nvarchar(100)

as

Declare @id int

BEGIN TRANSACTION 

insert into Orders(Order_Country,Order_Adress,Order_UserName,Order_PostID,Cells,Order_Phone,Total_pay,CartNumber,IsPay) 

values (@country,@adds,@ynames,@pids,@cellp,@cphone,@amounts,@cartnumber,'0')

Select @id=@@identity

insert into Orders_Item (OrderNumber,ProductsID,Products_Color,Products_Price,Order_Qty,Item_Total) 

select @id,Carts_Item.ProductsID,Carts_Item.Products_Color,Carts_Item.Products_Price,Carts_Item.Item_Qty,Carts_Item.Total_Pay 

from Carts_Item where Carts_Item.CartNumber=@cartnumber 

delete Carts_Item where CartNumber=@cartnumber

IF @@error <> 0 --发生错误

BEGIN

ROLLBACK TRANSACTION

RETURN 0

END

ELSE

BEGIN

COMMIT TRANSACTION

RETURN @id --执行成功

END

 

 
 

 

#region 执行存储过程

 

SqlParameter[] param = new SqlParameter[] 

new SqlParameter("@country",country), 

new SqlParameter("@adds",adds), 

new SqlParameter("@ynames",ynames), 

new SqlParameter("@pids", pids), 

new SqlParameter("@cellp",cellp), 

new SqlParameter("@cphone", cphone),

new SqlParameter("@amounts",amounts),

new SqlParameter("@cartnumber",cartnumber),

new SqlParameter("@return",SqlDbType.Int)

};

param[8].Direction = ParameterDirection.ReturnValue;

MSCL.SqlHelper.RunProcedure("AddOrderTran", param);

object obj = param[8].Value; //接受返回值

 

 

//string connStr = System.Configuration.ConfigurationManager.AppSettings["ConStr"].ToString();

//using (SqlConnection conn = new SqlConnection(connStr))

//{

// conn.Open();

// SqlCommand cmd = new SqlCommand("AddOrderTran", conn);

// cmd.CommandType = CommandType.StoredProcedure;

 

// SqlParameter para1 = new SqlParameter("@country", country);

// para1.Direction = ParameterDirection.Input; //参数方向 为输入参数

// cmd.Parameters.Add(para1);

 

// SqlParameter para2 = new SqlParameter("@adds", adds);

// para2.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para2);

 

// SqlParameter para3 = new SqlParameter("@ynames", ynames);

// para3.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para3);

 

// SqlParameter para4 = new SqlParameter("@pids", pids);

// para4.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para4);

 

// SqlParameter para5 = new SqlParameter("@cellp", cellp);

// para5.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para5);

 

// SqlParameter para6 = new SqlParameter("@cphone", cphone);

// para6.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para6);

 

// SqlParameter para7 = new SqlParameter("@amounts", amounts);

// para7.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para7);

 

// SqlParameter para8 = new SqlParameter("@cartnumber", cartnumber);

// para8.Direction = ParameterDirection.Input;

// cmd.Parameters.Add(para8);

 

// SqlParameter paraReturn = new SqlParameter("@return", SqlDbType.Int);

// paraReturn.Direction = ParameterDirection.ReturnValue; //参数方向 为返回参数

// cmd.Parameters.Add(paraReturn);

 

// cmd.ExecuteNonQuery();

 

// object obj = paraReturn;

// if (obj.ToString() == "0")

// {

// //存储过程执行失败

// }

// else

// {

// //成功

// }

//}

//#endregion

 

 
 

 

本文的数据库用的是sql server自带数据Northwind 

 

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

C# 存储过程使用方法的更多相关文章

  1. jdbc调用存储过程的方法

    ----------------------------jdbc调用存储过程的方法---------------------------------------------------private ...

  2. Sql Server 带参数的存储过程执行方法

    Sql Server 带参数的存储过程执行方法 Visual C# 动态操作 SQL Server 数据库实例教程(4):带参数的存储过程执行方法 上一篇文章介绍了带参数的SQL语句执行方法和不带参数 ...

  3. oracle常用函数以及调用入参为record的存储过程的方法,

    转自:http://www.cnblogs.com/zhangronghua/archive/2007/08/20/862812.html SQL中的单记录函数1.ASCII返回与指定的字符对应的十进 ...

  4. mssql sqlserver 批量删除所有存储过程的方法分享

    转自:http://www.maomao365.com/?p=6864 摘要: 下文讲述采用sql脚本批量删除所有存储过程的方法,如下所示: 实验环境:sqlserver 2008 R2 平常使用sq ...

  5. Mybatis调用数据库的存储过程和方法

     转载. https://blog.csdn.net/ml0228123/article/details/81002258   上次的项目,要求我用java代码调用存储过程,折腾了好久.最后总算成功了 ...

  6. C#调用Oracle存储过程的方法

    C#调用Oracle存储过程的方法 准备: 环境:pl/sql+oracle9i+vs2008 创建表test: create table TEST(  ID      NUMBER,//编号  NA ...

  7. 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】

    疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...

  8. VB调用存储过程 - CreateParameter 方法

    这次又转为VB6了.......  (┬_┬) ---------------------------------------------------------------------------- ...

  9. hibernate的update() 更新延迟或者无法更新,导致同个service调用存储过程执行方法不精确

    hibernate的update()方法无法更新,不报错 原因是hibernate的update方法操作的是缓存,可以flush下先. 设置缓存为false理论上也可. 在一个serivce方法里,执 ...

  10. db2 存储过程迁移方法

    大家在迁移数据库时,存储过程一般也要迁移过去,但一般有两个问题: 1. 非常多存储过程有先后关系(存储过程调用存储过程),假设存储过程数量少,还能手动操作.假设量大,那真是要疯了. 2. 存储过程过大 ...

随机推荐

  1. h5的瀑布流

    <!doctype html><html><head><meta charset="utf-8"><title>超简易瀑 ...

  2. mac编译PHP报错 configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

    解决办法 brew install curl xcode-select --install

  3. java打jar包

    一.打包jar文件 1      如果是class文件     jar cvf myjar.jar Foo.class Bar.class 如果是包     jar cvf myjar.jar pac ...

  4. 转:sqlplus与shell互相传值的几种情况

    sqlplus与shell互相传值的几种情况 情况一:在shell中最简单的调用sqlplus $cat test.sh #!/bin/sh sqlplus oracle/oracle@oracle& ...

  5. Java中的字符串分割 .

    转自 http://blog.csdn.net/yuwenhao0518/article/details/7161059 http://longkm.blog.163.com/blog/static/ ...

  6. Bootstrap登录样式

    样式1 <!--bs中所有的均应该包裹在其中.--> <div class="container"> <!-- row是珊栏系统的包裹容器--> ...

  7. 把中文版NetBeans改成英文版

    不管你从官网下的是英文版还是中文版,安装之后操作界面都是中文的.这是因为NetBeans会根据你的操作系统自动设置界面语言,并且没有提供更改的功能.解决的方法也很简单,下面介绍我用过的两种方法: 方法 ...

  8. js 日期控件laydate使用

    官网  http://sentsin.com/layui/laydate/ 1. 下载官网上的压缩包,解压后只需要复制laydate 文件夹到你的项目中; 2. 在页面引入  <script t ...

  9. csv和excel的区别

    excel 文件只能通过excel打开,里面包含公式或者计算. csv文件是一种通用数据格式,可以用很多方式打开,比如excel.csv 以分割数据,用行分割符号分割行级数据,直接上个例子一目了然. ...

  10. 9、手把手教你Extjs5(九)使用MVVM特性控制菜单样式

    菜单的样式多了,怎么可以灵活的切换是个问题. 在使用标准菜单的时候,在菜单最前面有二个按钮,可以切换到树状菜单和按钮菜单. 在树状菜单的显示区,可以切换换到标准菜单,以及折叠式菜单. 切换到按钮菜单之 ...