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)的文章 ...
随机推荐
- 第一篇 UCOS介绍
第一篇 UCOS介绍 这个大家都知道.呵呵.考虑到咱们学习的完整性还是在这里唠叨一下.让大家再熟悉一下.高手们忍耐一下吧! uC/OS II(Micro Control Operation Syste ...
- AOP操作术语
- 用rand5()生成rand(n)
问题:有函数rand5(),它能够等概率生成[0,5)之间的整数.由rand5()构造rand(n)使其能够等概率生成[0,n)之间的整数. 思路1:有rand5()先生成等概率生成0和1的rand0 ...
- linux SIGSEGV 信号捕捉,保证发生段错误后程序不崩溃
在Linux中编程的时候 有时候 try catch 可能满足不了我们的需求.因为碰到类似数组越界 ,非法内存访问之类的 ,这样的错误无法捕获.下面我们介绍一种使用捕获信号实现的异常 用来保证诸如段错 ...
- 一个由有符号下标引起的bug
先看段代码: if(s[d[i]]) { ... } 这里的d是一个char*的内存buffer,s是一个256长度的bool数组.上段代码逻辑是,s已进行过初始化,其作用是过滤字节,有些字节对应tr ...
- Android and iOS 判断是那个系统访问。
<!-- 如果是安卓就加载. --> <neq name="Think.server.HTTP_USER_AGENT|strstr='Android'" valu ...
- 多个if和一个ifelse的区别
一个程序的要求如下,输入一个学生的数学成绩,如果大于等于60,那么就输出good,如果小于60那么输出not good int a scanf_s("%d",&a) if( ...
- Cookie的跨域问题
被误解的HttpCookie.Domain属性 有人说可以利用HttpCookie.Domain属性实现跨域访问,假如在A站(A.com)中写B站(B.com)的cookie,如下所示 这其实是错误的 ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(4):JDK动态代理+拦截器
一.拦截器的理解 学习拦截器之前需要对动态代理和反射有一定的基础. 官方说法: java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个actio ...
- 关于Html5中的单选与多选
1.下拉列表样式: <select> <option value ="volvo">Volvo</option> <option valu ...