c#中如何执行存储过程
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace 使用存储过程
{
using System.Data.SqlClient;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string connStr = "Data Source=.;Initial Catalog=MySchoolMoreData;Integrated Security=True"; #region 调用没有参数的存储过程 +void btnNoPARAMAS_Click(object sender, EventArgs e)
/// <summary>
/// 调用没有参数的存储过程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNoPARAMAS_Click(object sender, EventArgs e)
{
//SqlDataAdapter da = new SqlDataAdapter("select * from Student", connStr);
SqlDataAdapter da = new SqlDataAdapter("usp_getAllStuInfo", connStr);
DataTable dt = new DataTable();
da.Fill(dt);
this.dgvList.DataSource = dt;
}
#endregion #region 调用有输入参数的存储过程 +void btnHasParamas_Click(object sender, EventArgs e)
/// <summary>
/// 调用有输入参数的存储过程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnHasParamas_Click(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("usp_getStuInfoBySexAndCname", connStr);
//1.如果传入了存储过程,必须告诉服务器按存储过程进行处理,否则就会按sql语句进行处理
da.SelectCommand.CommandType = CommandType.StoredProcedure;
//2.创建存储过程中所需要的参数,注意:名称必须与存储过程的参数名称对应
SqlParameter[] ps = {
new SqlParameter("@cname",this.cboClass.Text),//Text获取显示在下拉列表控件中的文本值
new SqlParameter("@Sex",rdoMale.Checked?"男":"女")
};
//3.将参数传递给服务器使用
da.SelectCommand.Parameters.AddRange(ps);
DataTable dt = new DataTable();
da.Fill(dt);
this.dgvList.DataSource = dt;
}
#endregion #region 加载班级下拉列表数据和Dgv控件的分页数据 +void Form1_Load(object sender, EventArgs e)
/// <summary>
/// 加载班级下拉列表数据和Dgv控件的分页数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
#region 加载下拉列表数据
SqlDataAdapter da = new SqlDataAdapter("select classid ,classname from classes where classid<@num", connStr);
SqlParameter p = new SqlParameter("@num", );
SqlParameter p2 = new SqlParameter("@num2", );
da.SelectCommand.Parameters.Add(p2);
da.SelectCommand.Parameters.Add(p);
DataTable dt = new DataTable();
da.Fill(dt);
this.cboClass.DisplayMember = "classname";
this.cboClass.ValueMember = "classid";
this.cboClass.DataSource = dt;
#endregion LoadDgvData();
}
#endregion int pageIndex = ; //当前页索引
//int pageCount = 5; #region 调用带输出参数和返回值的存储过程 +void btnOutput_Click(object sender, EventArgs e)
/// <summary>
/// 调用带输出参数和返回值的存储过程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOutput_Click(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("usp_GetCountByCnameAndSex", connStr);
//1.如果传入了存储过程,必须告诉服务器按存储过程进行处理,否则就会按sql语句进行处理
da.SelectCommand.CommandType = CommandType.StoredProcedure;
//2.创建存储过程中所需要的参数,注意:名称必须与存储过程的参数名称对应
SqlParameter[] ps = {
new SqlParameter("@cname",this.cboClass.Text),//Text获取显示在下拉列表控件中的文本值
new SqlParameter("@Sex",rdoMale.Checked?"男":"女"),
//创建输出参数的时候,没有必要赋值
//创建一个输出参数,服务器最终将输出参数的值返回到这个参数对象的Value属性中
new SqlParameter("@totalCount",),
new SqlParameter("@cnt",SqlDbType.Int),
new SqlParameter("@result",SqlDbType.Int)
};
//3.一定要修改输出参数的方向,否则服务器会将所有参数当成输入参数进行处理,需要客户端传入值,如果没有就报错
ps[].Direction = ParameterDirection.Input;//默认就是input,不设置也没有关系
//ps[2].Direction = ParameterDirection.Output;//设置参数的方向为输出参数
//指定方向,是向服务器发送返回对应类型输出参数或者返回值的请求
ps[].Direction = ParameterDirection.Output;
ps[].Direction = ParameterDirection.ReturnValue;
//3.将参数传递给服务器使用
da.SelectCommand.Parameters.AddRange(ps);
DataTable dt = new DataTable();
da.Fill(dt);
this.dgvList.DataSource = dt;
this.lblMsg.Text = "总人数是:" + ps[].Value + ",指定性别的人数是:" + ps[].Value + ",返回值是:" + ps[].Value;
}
#endregion #region 下一页 + void btnNext_Click(object sender, EventArgs e)
/// <summary>
/// 下一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnNext_Click(object sender, EventArgs e)
{
if (pageIndex.ToString() == System.Configuration.ConfigurationManager.AppSettings["totalPageCount"])
{
MessageBox.Show("没有下一页了");
return;
}
pageIndex++;
LoadDgvData();
}
#endregion #region 获取分页数据 +void LoadDgvData()
/// <summary>
/// 获取分页数据
/// </summary>
private void LoadDgvData()
{
string count = System.Configuration.ConfigurationManager.AppSettings["pageCount"];
SqlParameter[] ps ={
new SqlParameter("@pageIndex",pageIndex),
new SqlParameter("@pageCount",count),
new SqlParameter("@totalPageCount",SqlDbType.Int)
};
ps[].Direction = ParameterDirection.Output;//修改参数的方法为输出参数--发送请求
this.dgvList.DataSource = SqlHelper.ExecuteTable("usp_getPageData", CommandType.StoredProcedure, ps);
System.Configuration.ConfigurationManager.AppSettings["totalPageCount"] = ps[].Value.ToString();
}
#endregion #region 上一页 +void btnPre_Click(object sender, EventArgs e)
/// <summary>
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnPre_Click(object sender, EventArgs e)
{
if (pageIndex == )
{
MessageBox.Show("没有上一页了");
return;
}
pageIndex--;
LoadDgvData();
}
#endregion
}
}
c#中如何执行存储过程的更多相关文章
- Oracle中执行存储过程call和exec区别
Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...
- Java中执行存储过程和函数(web基础学习笔记十四)
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- 在asp.net中执行存储过程(转)
摘自:http://www.cnblogs.com/smhy8187/articles/677742.html 声明:本例用的数据库是系统提供的pubs数据库,表是是employee,编程语言用C# ...
- Java中执行存储过程和函数
装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...
- 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题
记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...
- EFCore 中执行存储过程返回DataSet DataTable
在项目中由于需求,需要返回复杂的数据,需要执行存储过程,但是在DONETCORE2.0中,看官网文档执行的sql的有点操蛋,满足不了需求,就想到了ADO.NET 于是找资料,也没有合适的,就动手自己封 ...
- EF中执行存储过程,获取output返回值
EF不能直接支持执行存储过程,于是使用转化成执行SQL语句的形式,却怎么也获取不到output的值,折腾的好久,终于解决了,分享下曲折的经历: public int AddVote(int title ...
- JDBC连接数据库中CallableStatement执行有参存储过程及注解其他
Oracle的建有参存储过程的过程 procedure pro_01(v_01 in number,v_02 out varchar2) as begin select name into v_02 ...
- shell 中执行Oracle查询和执行存储过程
[oracle@master2 test]$ more b.sh #!/bin/sh #数据库地址 ip=192.168.1.250 port sid=orcl username=c##scott p ...
随机推荐
- 冲刺阶段 day 9
项目进展 昨天终于完成了教师部分的内容,今天我们又重新开始对之前系部设置不能实现的内容进行了编写,之前缺少删除和查询也做了补充,在与数据库的连接上也做了修改和更新. 存在问题 由于是之前遇到困难没做完 ...
- 解决Win7 软件图标不显示--Win7图标异常,快捷方式不显示解决方法
电脑症状:WIN7的系统,桌面上的图标显示的不正常,快捷方式显示的是未知程序.看不到程序默认图标,快捷方式图标不显示. 解决方法:删除程序图标缓存即可. 将下面的内容复制到记事本保存为“Repai ...
- .NET中Dictionary<TKey, TValue>浅析
.NET中Dictionary<TKey, Tvalue>是非常常用的key-value的数据结构,也就是其实就是传说中的哈希表..NET中还有一个叫做Hashtable的类型,两个类型都 ...
- How to Change RabbitMQ Queue Parameters in Production?
RabbitMQ does not allow re-declaring a queue with different values of parameters such as durability, ...
- MR原理
三.MapReduce运行原理 1.Map过程简述: 1)读取数据文件内容,对每一行内容解析成<k1,v1>键值对,每个键值对调用一次map函数 2)编写映射函数处理逻辑,将输入的< ...
- Nodejs·理解Buffer
Node里面的Buffer其实就是用于网络请求.文件读取等等操作,而且是分配在堆外,不会占用堆内的内存,这也是因为本来V8的内存就很小,如果读取大文件,那就...... 之前有看过Logstash的B ...
- 简单的JPA注解例子
package ssh.entity; import java.math.BigDecimal; import java.util.Date; import javax.persistence.*; ...
- spring容器对bean生命周期的管理三中方式
spring容器对bean的生命周期管理主要在两个时间点:bean的初始化完成(包括属性值被完全注入),bean的销毁(程序结束,或者引用结束)方式一:使用springXML配置中的init-meth ...
- v-show和v-if的区别
v-show和v-if的区别
- 实现步骤: 推送&传感器&UIDynamic
一.本地通知基本使用: #01.请求授权(8.0以前默人授权) #02.创建本地通知 #03.设置通知内容 #04.设置通知时间(多久后发通知) #05.发送通知 二.本地通知而外设置: #01.设置 ...