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#中如何执行存储过程的更多相关文章

  1. Oracle中执行存储过程call和exec区别

    Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...

  2. Java中执行存储过程和函数(web基础学习笔记十四)

    一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...

  3. 在asp.net中执行存储过程(转)

    摘自:http://www.cnblogs.com/smhy8187/articles/677742.html 声明:本例用的数据库是系统提供的pubs数据库,表是是employee,编程语言用C# ...

  4. Java中执行存储过程和函数

    装载于:http://www.cnblogs.com/liunanjava/p/4261242.html 一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. Ca ...

  5. 在SQL Server数据库中执行存储过程很快,在c#中调用很慢的问题

    记录工作中遇到的问题,分享出来: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一个比较郁闷的问题, ...

  6. EFCore 中执行存储过程返回DataSet DataTable

    在项目中由于需求,需要返回复杂的数据,需要执行存储过程,但是在DONETCORE2.0中,看官网文档执行的sql的有点操蛋,满足不了需求,就想到了ADO.NET 于是找资料,也没有合适的,就动手自己封 ...

  7. EF中执行存储过程,获取output返回值

    EF不能直接支持执行存储过程,于是使用转化成执行SQL语句的形式,却怎么也获取不到output的值,折腾的好久,终于解决了,分享下曲折的经历: public int AddVote(int title ...

  8. JDBC连接数据库中CallableStatement执行有参存储过程及注解其他

    Oracle的建有参存储过程的过程 procedure pro_01(v_01 in number,v_02 out varchar2) as begin select name into v_02 ...

  9. shell 中执行Oracle查询和执行存储过程

    [oracle@master2 test]$ more b.sh #!/bin/sh #数据库地址 ip=192.168.1.250 port sid=orcl username=c##scott p ...

随机推荐

  1. 在英文版操作系统中安装的MS SQL server,中文字段无法匹配

    在英文版的操作系统中安装的MS SQL server,会出现中文字段无法被匹配到.其原因在于英文环境下安装的MS SQL server的排序规则不包括中文. 所以解决办法就是更改MS SQL serv ...

  2. Programming Entity Framework CodeFirst--表关系约定

    表之间的关系分为一对多,多对多,一对一三种,实质就是对外键进行配置. 一.一对多 1. Required Destination包含Lodging>的集合. public class Desti ...

  3. FusionCharts简单教程(三)-----FusionCharts的基本属性

          通过前面两章的讲解我们可以制作出简单的图像,但是有时候我们需要对图像进行一个精确的规划,比如设置背景颜色.设置提示信息.设置间隔颜色等等,这时就需要我们对FusionCharts的细节有比 ...

  4. 基于java的设计模式入门(1)——为什么要学习设计模式

    大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ...

  5. Unity3D热更新全书-脚本(二) 两级分化

    上篇明确了我们探讨的脚本是什么:是写在文本文件里面的代码,可以作为资源加载,取得字符串再执行. 可是为什么世界上会有那么多的脚本?而其使用方法完全看起来不一样呢?这是因为每种脚本都有自己的定位,在不同 ...

  6. SQL Server 性能优化之——T-SQL 临时表、表变量、UNION

    这次看一下临时表,表变量和Union命令方面是否可以被优化呢? 阅读导航 一.临时表和表变量 二.本次的另一个重头戏UNION 命令 一.临时表和表变量 很多数据库开发者使用临时表和表变量将代码分解成 ...

  7. jQuery为哪般去掉了浏览器检测

    由于做HTML5相关的项目,许多前卫时髦的前端技术就需要考虑一下IE是否支持.要是在以前,可以很方便地调用jQuery的jQuery.browser来实现. If(jQuery.browser.msi ...

  8. 大叔也说Xamarin~Android篇~环境部署与破解

    回到目录 现在移动开发很HOT,以至于很多人都转向了它,大叔也不例外,这次有机制接触一下xamarin这个东西,其实之前也用于xamarin,只是用来写网页程序,没有接触到移动开发,对于xamarin ...

  9. Node.js入门:Node.js&NPM的安装与配置

    Node.js安装与配置      Node.js已经诞生两年有余,由于一直处于快速开发中,过去的一些安装配置介绍多数针对0.4.x版本而言的,并非适合最新的0.6.x的版本情况了,对此,我们将在0. ...

  10. C#学习系列-类与结构的区别

    参考:http://www.microsoftvirtualacademy.com/Content/ViewContent.aspx?et=9851&m=9830&ct=31038 如 ...