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. c# 使用http摘要认证

    .net 使用http摘要认证,返回json数据 using System; using System.Collections.Generic; using System.Linq; using Sy ...

  2. 2019春招——Vivo大数据开发工程师面经

    Vvio总共就一轮技术面+一轮HR面,技术面总体而言,比较宽泛,比较看中基础,面试的全程没有涉及简历上的东西(都准备好跟他扯项目了,感觉是抽取的题库...)具体内容如下: 1.熟悉Hadoop哪些组件 ...

  3. ajax(读取json数据)

    ajax知识点: 语法:$.ajax(路由,请求方式,返回的数据类型,数据参数,回调函数) url: "路由", type:"",默认get请求(get或pos ...

  4. 20164310Exp2后门原理与实践

    一.基础问题回答 1.例举你能想到的一个后门进入到你系统中的可能方式 答:在莫名其妙的网站下载某些莫名奇妙的播放器. 2.例举你知道的后门如何启动起来(win及linux)的方式? 答:对于windo ...

  5. scrapyd和scrapyd-client使用教程

    原文地址:http://blog.wiseturtles.com/posts/scrapyd.html Tags scrapyd scrapy scrapyd-client By crazygit O ...

  6. 隐马尔可夫模型(HMM) 学习笔记

    在中文标注时,除了条件随机场(crf),被提到次数挺多的还有隐马尔可夫(HMM),通过对<统计学习方法>一书的学习,我对HMM的理解进一步加深了. 第一部分 介绍隐马尔可夫 隐马尔可夫模型 ...

  7. Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1)

    Troubleshooting 10g and 11.1 Clusterware Reboots (文档 ID 265769.1) This document is intended for DBA' ...

  8. java.lang.Byte 类源码浅析

    Byte 类字节,属于Number. public final class Byte extends Number implements Comparable<Byte> { /** * ...

  9. [STM32F103]RTC日历

    使能PWR和BKP时钟: a) RCC_APB1PeriphClockCmd(); 使能后备寄存器访问: a) PWR_BackupAccessCmd(); 配置RTC时钟源,使能RTC时钟: a)  ...

  10. 常见手机的设备分辨率、viewport和devicePixelRatio

    常见手机的设备分辨率和viewport分辨率,及其1rem的大小(以vmin为单位) 常见的devicePixelRatio是1, 1.325, 1.5, 2, 2.4, 3.  (具体见下面的表格, ...