CREATE PROCEDURE [dbo].[GetNameById]
@studentid varchar(),
@studentname nvarchar() OUTPUT
AS
BEGIN
SELECT @studentname=studentname FROM student
WHERE studentid=@studentid
if @@Error<>
RETURN -
else
RETURN
END using (SqlConnection conn = new SqlConnection(connStr))
{
try
{
SqlCommand cmd = new SqlCommand("GetNameById", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@studentid", "");  //给输入参数赋值
SqlParameter parOutput =cmd.Parameters.Add("@studentname", SqlDbType.NVarChar, );  //定义输出参数
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(),
@adds nvarchar(),
@ynames nvarchar(),
@pids nvarchar(),
@cellp nvarchar(),
@cphone nvarchar(),
@amounts nvarchar(),
@cartnumber nvarchar()
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,'')
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 <> --发生错误
BEGIN
ROLLBACK TRANSACTION
RETURN
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[].Direction = ParameterDirection.ReturnValue;
MSCL.SqlHelper.RunProcedure("AddOrderTran", param);
object obj = param[].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 .只返回单一记录集的存储过程 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 . 没有输入输出的存储过程
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 . 有返回值的存储过程
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,)
};
// 将参数类型设置为 返回值类型
parameters[].Direction = ParameterDirection.ReturnValue;
// 添加参数
cmd.Parameters.Add(parameters[]); sqlconn.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
sqlconn.Close();
// 显示影响的行数和返回值
Label1.Text += "-" + parameters[].Value.ToString() ; 存储过程Categoriestest3 CREATE PROCEDURE Categoriestest3
AS
insert into dbo.Categories
(CategoryName,[Description],[Picture])
values ('test1','test1',null)
return @@rowcount
GO . 有输入参数和输出参数的存储过程 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,) ,
new SqlParameter("@CategoryName", SqlDbType.NVarChar,) ,
};
// 设置参数类型
parameters[].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[].Value = "testCategoryName";
// 添加参数
cmd.Parameters.Add(parameters[]);
cmd.Parameters.Add(parameters[]); sqlconn.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
sqlconn.Close();
// 显示影响的行数和输出参数
Label1.Text += "-" + parameters[].Value.ToString() ; 存储过程Categoriestest4 CREATE PROCEDURE Categoriestest4
@id int output,
@CategoryName nvarchar()
AS
insert into dbo.Categories
(CategoryName,[Description],[Picture])
values (@CategoryName,'test1',null)
set @id = @@IDENTITY
GO . 同时具有返回值、输入参数、输出参数的存储过程 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,) ,
new SqlParameter("@CategoryName", SqlDbType.NVarChar,) ,
new SqlParameter("rval", SqlDbType.Int,)
};
// 设置参数类型
parameters[].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[].Value = "testCategoryName"; // 给输入参数赋值
parameters[].Direction = ParameterDirection.ReturnValue; // 设置为返回值
// 添加参数
cmd.Parameters.Add(parameters[]);
cmd.Parameters.Add(parameters[]);
cmd.Parameters.Add(parameters[]); sqlconn.Open();
// 执行存储过程并返回影响的行数
Label1.Text = cmd.ExecuteNonQuery().ToString();
sqlconn.Close();
// 显示影响的行数,输出参数和返回值
Label1.Text += "-" + parameters[].Value.ToString() + "-" + parameters[].Value.ToString(); 存储过程Categoriestest5 CREATE PROCEDURE Categoriestest5
@id int output,
@CategoryName nvarchar()
AS
insert into dbo.Categories
(CategoryName,[Description],[Picture])
values (@CategoryName,'test1',null)
set @id = @@IDENTITY
return @@rowcount
GO . 同时返回参数和记录集的存储过程
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,) ,
new SqlParameter("@CategoryName", SqlDbType.NVarChar,) ,
new SqlParameter("rval", SqlDbType.Int,) // 返回值
};
// 设置参数类型
parameters[].Direction = ParameterDirection.Output; // 设置为输出参数
parameters[].Value = "testCategoryName"; // 给输入参数赋值
parameters[].Direction = ParameterDirection.ReturnValue; // 设置为返回值
// 添加参数
cmd.Parameters.Add(parameters[]);
cmd.Parameters.Add(parameters[]);
cmd.Parameters.Add(parameters[]); SqlDataAdapter dp = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
// 填充dataset
dp.Fill(ds);
// 显示结果集
GridView1.DataSource = ds.Tables[];
GridView1.DataBind(); Label1.Text = "";
// 显示输出参数和返回值
Label1.Text += parameters[].Value.ToString() + "-" + parameters[].Value.ToString(); 存储过程Categoriestest6 CREATE PROCEDURE Categoriestest6
@id int output,
@CategoryName nvarchar()
AS
insert into dbo.Categories
(CategoryName,[Description],[Picture])
values (@CategoryName,'test1',null)
set @id = @@IDENTITY
select * from Categories
return @@rowcount
GO . 返回多个记录集的存储过程 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[];
GridView1.DataBind();
// 显示结果集2
GridView2.DataSource = ds.Tables[];
GridView2.DataBind(); 存储过程Categoriestest7 CREATE PROCEDURE Categoriestest7
AS
select * from Categories
select * from Categories
GO

[转] ADO.NET调用存储过程带输出参数或返回值的更多相关文章

  1. C#调用存储过程带输出参数或返回值

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

  2. EF执行存储过程(带输出参数)

    1.不含动态sql.带输出参数存储过程调用实例 1.存储过程代码:   2.EF自动生成代码(包括对应ObjectResult的实体模型): 3.调用存储过程代码实例: 总结: ObjectParam ...

  3. c++ ado 调用存储过程并得到输出参数和返回值

    // AccessSqlserverByAdo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h ...

  4. 【Mysql 调用存储过程,输出参数的坑】

    玛德,数据行都返回过来了,就是没有输出参数!!! 扒官方设计文档:这么一段 雷死人了!!! When a stored procedure is called using MySqlCommand.E ...

  5. 存储过程: 存储过程(stored procedure)有时也称为sproc。存储过程存储于数据库中而不是在单独的文件中,有输入参数、输出参数以及返回值等。

    存储过程示例一: 执行存储过程方法一: 执行存储过程方法二: 存储过程可以定义返回值: 修改存储过程: 利用存储过程查找三个表内的信息: 练习:  超市管理系统:表一:门店仓库表   MenDian ...

  6. sqlserver 存储过程 带输出参数

    CREATE PROCEDURE [dbo].[output] @acctNbr varchar(), --会员卡号 @acctPwd1 nvarchar() OUT, --登录密码 @acctPwd ...

  7. Android调用远程Service的参数和返回值都需要实现Parcelable接口

    import android.os.Parcel;import android.os.Parcelable; public class Person implements Parcelable{ pr ...

  8. java Servlet+mysql 调用带有输入参数和返回值的存储过程(原创)

    这个数据访问的功能,我在.NET+Mysql .NET+Sqlserver  PHP+Mysql上都实现过,并且都发布在了我博客园里面,因为我觉得这个功能实在是太重要,会让你少写很多SQL语句不说,还 ...

  9. C# 调用存储过程操作 OUTPUT参数和Return返回值

    本文转载:http://www.cnblogs.com/libingql/archive/2010/05/02/1726104.html 存储过程是存放在数据库服务器上的预先编译好的sql语句.使用存 ...

随机推荐

  1. 在图像中随机更改像素值程序——matlab

    I=imread('C:\Users\wangd\Desktop\result3.png'); % m = rgb2gray(I); % r = unidrnd(,,); %产生一个1*100的数组, ...

  2. Eureka入门案例

    1.整体思路 1.1.服务注册中心Eureka(可以是一个集群,对外暴露自己的地址) 1.2.服务提供者:启动后向Eureka注册自己的信息(地址,提供什么服务) 1.3.客户端消费者:向Eureka ...

  3. 探索C++头文件解析方法

    最近一直在搞基于SWIG的C++接口翻译Java代码的工作.SWIG内部基于Bison(Yacc)的C/C++解析器,最近纠结于SWIG不能解析C++构造函数中的默认初始化赋值操作,想找一个能够补充此 ...

  4. Optaplanner规划引擎的工作原理及简单示例(2)

    开篇 在前面一篇关于规划引擎Optapalnner的文章里(Optaplanner规划引擎的工作原理及简单示例(1)),老农介绍了应用Optaplanner过程中需要掌握的一些基本概念,这些概念有且于 ...

  5. 浅谈C#在网络波动时防重复提交

    前几天,公司数据库出现了两条相同的数据,而且时间相同(毫秒也相同).排查原因,发现是网络波动造成了重复提交. 由于网络波动而重复提交的例子也比较多: 网络上,防重复提交的方法也很多,使用redis锁, ...

  6. mac下常用命令

    常用命令 ls 查看当前目录下的文件 cd 进入某目录 . cd - 跳转回前一目录 . cd ~ 进入当前用户个人目录 pwd 输出当前所在路径 mkdir 新建文件夹. touch 新建文件 fi ...

  7. 1. 通过DHCP服务器动态获取IP地址之后无法上网的解决方法

    故障:内网正常,在同一个局域网内的其它PC端通过DHCP获取IP地址并且可以正常上网. 1.通过wireshark抓包,使用ipconfig /renew时,wireshark内出现DHCP请求服务, ...

  8. 163邮箱报错WARN: 535 Error: authentication failed.

    会让输入自定义授权码..用这个密码代替邮箱的密码,就可以发邮件了.

  9. cgi fast-cig php-fpm

    cgi 通用网关接口,接受到动态请求,web服务器会根据这次请求的内容,然后会fork一个新进程来运行, 这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进 ...

  10. 关于Jupyter Notebook快捷操作

    Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的 ...