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. Spring Boot(5)一个极简且完整的后台框架

    https://blog.csdn.net/daleiwang/article/details/75007588 Spring Boot(5)一个极简且完整的后台框架 2017年07月12日 11:3 ...

  2. linux 线程同步

    参考链接:https://blog.csdn.net/daaikuaichuan/article/details/82950711#font_size5font_2 一,互斥锁 #include &l ...

  3. tomcat中间件提交表单数据量过大警告处理方案

    http://www.bubuko.com/infodetail-976418.html http://www.cnblogs.com/yg_zhang/p/4248061.html tomcat中间 ...

  4. eclipse项目上传服务器注意事项

    1.先准备服务器环境 2 数据库导入,tomcat安装 3 开放服务器端口,配置网络 4.修改本地代码修改为发布版本,即ip,账号密码数据库等 5 变动的信息应该写在配置文件或者一个全局产量中,这样才 ...

  5. maven项目pom.xml添加main启动类

    pom.xml配置添加main启动类: <build> <finalName>MyApp</finalName> <!-- 最终package打包的jar名称 ...

  6. Jmeter连接数据库方式

    关系型数据库: 1.mysql: 方式:Database URL:jdbc:mysql://localhost:port/DBname?user=**&password=**&allo ...

  7. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.3

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  8. Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)

    这一篇主要是学习python里面的模块,篇幅可能会比较长 模块的概念:在Python中,一个.py文件就称之为一个模块(Module). 模块一共三种: python标准库 第三方模块 应用程序自定义 ...

  9. java 日志脱敏框架 sensitive-v0.0.4 系统内置常见注解,支持自定义注解

    项目介绍 日志脱敏是常见的安全需求.普通的基于工具类方法的方式,对代码的入侵性太强.编写起来又特别麻烦. 本项目提供基于注解的方式,并且内置了常见的脱敏方式,便于开发. 特性 基于注解的日志脱敏. 可 ...

  10. javascript 数组的简单应用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...