C#调用存储过程的ADO.Net
using System.Data.SqlClient;
//如果存储过程没有输入和输出参数,而且不返回查询结果 SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();

//如果存储过程带输入参数
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存储过程输入参数变量名", 数据类型));
//如cmd.Parameters.Add(new SqlParameter("@riqi", SqlDbType.DateTime, 8));
//把具体的值传给输入参数
cmd.Parameters["存储过程输入参数"].Value =具体的值;
//如cmd.Parameters["@riqi"].Value = this.textBox1.Text;
//执行存储过程
cmd.ExecuteNonQuery();


//如果存储过程带输出参数
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存储过程输出参数变量名", 数据类型));
cmd.Parameters["存储过程输出参数变量名"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();


//如果存储过程带输出和输出参数
SqlCommand cmd = new SqlCommand("存储过程名", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("存储过程输入参数变量名", 数据类型));
cmd.Parameters["存储过程输入参数"].Value =具体的值;
cmd.Parameters.Add(new SqlParameter("存储过程输出参数变量名", 数据类型));
cmd.Parameters["存储过程输出参数变量名"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value
//如this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString();


调用带输入参数的存储过程 【例2】创建存储过程AddNewCategory实现往Category表中添加新的商品类别,新的商品分类名称CategoryName作为输入参数输入。
CREATE PROCEDURE AddNewCategory
(@categoryName nvarchar(50))
AS
INSERT INTO Category (CategoryName) VALUES (@categoryName)


【例】调用上述存储过程AddNewCategory
try
{
// 数据库连接字符串
string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
// 创建Connection 对象
SqlConnection conn = new SqlConnection(connStr);
// 打开数据库连接
conn.Open(); SqlCommand cmd = new SqlCommand("AddNewCategory", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@categoryName", SqlDbType.NVarChar,50));
cmd.Parameters["@categoryName"].Value = this.textBox1.Text;
cmd.ExecuteNonQuery();
MessageBox.Show("插入成功");
} catch
{
MessageBox.Show("操作不成功");
return;
}


调用带输入和输出参数的存储过程
【例1】创建存储过程ShoppingCartItemCount获取某购物车中购物种数并作为输出参数输出,购物车编号CartID为输入参数。
CREATE Procedure [dbo].[ShoppingCartItemCount]
( @CartID nvarchar(50),
@ItemCount int OUTPUT
)
AS
SELECT @ItemCount = COUNT(ProductID) FROM ShoppingCart
WHERE CartID = @CartID


【例】调用上述存储过程ShoppingCartItemCount
try
{
// 数据库连接字符串
string connStr = "server=localhost;uid=sa;pwd=;database=eshop";
// 创建Connection 对象
SqlConnection conn = new SqlConnection(connStr);
// 打开数据库连接
conn.Open(); SqlCommand cmd = new SqlCommand("ShoppingCartItemCount", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CartID", SqlDbType.NVarChar,50));
cmd.Parameters["@CartID"].Value = this.textBox2.Text;
cmd.Parameters.Add(new SqlParameter("@ItemCount",SqlDbType.Int));
cmd.Parameters["@ItemCount"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
//显示输出参数的值cmd.Parameters["存储过程输出参数变量名"].Value
this.textBox3.Text = cmd.Parameters["@ItemCount"].Value.ToString(); } catch
{ MessageBox.Show("操作不成功");
return;
}

实际例子:

string constr = "server=192.168.9.111;database=111;uid=sa;pwd=1111234";
using(SqlConnection conn=new SqlConnection(constr))
{
conn.Open(); using (SqlCommand cmd = new SqlCommand("p_pageSelect", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@num", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@tableName", SqlDbType.NVarChar, 50));
cmd.Parameters.Add(new SqlParameter("@startNum", SqlDbType.Int)); cmd.Parameters["@num"].Value = this.tbNum.Text;
cmd.Parameters["@tableName"].Value = this.cmbTableName.Text;
cmd.Parameters["@startNum"].Value = this.tbStartNum.Text;
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds = new DataSet(); sda.Fill(ds);
dgvData.DataSource= ds.Tables[0]; }
}

C#调用存储过程的ADO.Net的更多相关文章
- c++ ado 调用存储过程并得到输出参数和返回值
// AccessSqlserverByAdo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h ...
- SSIS使用OleDB和Ado.Net两种方式调用 存储过程
在使用”执行 SQL 任务“组件调用存储过程时,连接方式使用OleDB和Ado.Net稍有不同,结合图例说明一下 当我们使用OleDB时,设置的截图如下: 参数使用?来代替,Parameter Nam ...
- ADO.NET笔记——调用存储过程
相关知识: 在ADO.NET访问SQL Server时,鼓励使用存储过程取代常规的SQL语句. 存储过程有下列优点: 存储过程中的SQL语句将会经过预先的解析和编译,然后存放在数据库服务器上行.调用的 ...
- ADO.NET访问SQL Server调用存储过程带回参
1,ADO.NET访问SQL Server调用存储过程带回参 2,DatabaseDesign use northwind go --存储过程1 --插入一条商品 productname=芹菜 un ...
- ADO.NET系列之事务和调用存储过程
ADO.NET系列之Connection对象 ADO.NET系列之Command对象 ADO.NET系列之DataAdapter对象 ADO.NET系列之事务和调用存储过程 前几篇我们介绍了Conne ...
- 存储过程分页 Ado.Net分页 EF分页 满足90%以上
存储过程分页: create proc PR_PagerDataByTop @pageIndex int, @pageSize int, @count int out as select top(@p ...
- 数据库复习总结(20)-存储过程以及.net调用存储过程
一.存储过程(注意区分将一段select语句进行封装叫做视图)(1)将一段t-sql脚本进行封装,以完成一个逻辑操作(2)创建存储过程: create proc 名称 ...
- Asp调用存储过程,command.CreateParameter 参数值的类型说明
Asp调用存储过程,command.CreateParameter 参数值的类型说明 Asp调用各种存储过程,包括带参数,无参数,输入输出参数,带返回值等. 1,调用没有参数的存储过程 <% s ...
- ASP调用存储过程访问SQL Server
ASP调用存储过程访问SQL Server 2011-02-15 10:22:57 标签:asp 数据库 sQL 存储过程 Server ASP和存储过程(Stored Procedures)的文章 ...
随机推荐
- java定时任务实现的几种方式(Timer、Spring Task、Quartz)
Timer JDK自带的Timer类,允许调度一个TimerTask任务. Demo: /** * Timer测试类 */ public class TimerDemo { public static ...
- tomcat报503 或者无法启动应用
一般都是配置文件有问题,或者路径问题,或者jvm的参数路径问题.... 总之,报错实在是不清楚!这点比resin差远了!!
- 公共技术点之 Java 反射 Reflection
本文摘录地址: http://codekk.com/open-source-project-analysis/detail/Android/Mr.Simple/%E5%85%AC%E5%85%B1%E ...
- jQuery--左侧菜单收缩隐藏
实现步骤: 步骤一. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
- UOJ#46. 【清华集训2014】玄学
传送门 分析 清华集训真的不是人做的啊嘤嘤嘤 我们可以考虑按操作时间把每个操作存进线段树里 如果现在点x正好使一个整块区间的右端点则更新代表这个区间的点 我们不难发现一个区间会因为不同的操作被分成若干 ...
- c# 导入c++ dll
1.类的函数的内联实现 #include "stdafx.h" #include "testdll.h" #include <iostream> # ...
- Jackson-将对象转为Json字符串
SpringMVC-处理JSON 1.引入jackson依赖 <properties> <jackson.version>1.9.13</jackson.version& ...
- sql 存储过程返回多个值
ALTER PROCEDURE your_sp_name ASBEGIN DECLARE @a INT, @b INT, @c INT SELECT @a= COUNT(1) FRO ...
- php变量数据类型
整型:可以用十进制.八进制.十六进制指定.十进制就是日常使用的数字:八进制,数字前必须加上“0”(这个0是阿拉伯数字0,可不是英文字母“欧”哦):十六进制,数字前必须加“0x” (这个0也是阿拉伯数字 ...
- DataTable与结构不同实体类之间的转换
在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我们怎么处理呢?可能有人会说,在转换时创建一个实体对象,对表里的数据逐行遍历来实例化这个实体对象不就完了.的 ...