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 ...
随机推荐
- Form认证的几点说明
有的页面需要用户认证之后才可以进入,通常都是在Filter的OnActionExecuting方法中我们需要获取当前用户.有两种情况不必登录:1.用户是登录的,也就是认证过的.2.用户上次登录了,但没 ...
- 对map集合进行排序
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map ...
- Unity3d热更新全书-加载(二)如何在不用AssetBundle的前提下动态加载预设
Unity3D的主要构成大家都知道,首先是场景图,场景图上的节点构成一颗树. 每个节点对应一个GameObject对象 然后每个GameObject有若干个组件 有一些组件会与资源产生关系,比如Mes ...
- EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服务器的心跳检测
回到目录 上一讲中基本实现了对数据库的读写分离,而在选择只读数据库上只是随机选择,并没有去检测数据库服务器是否有效,如服务器挂了,SQL服务停了,端口被封了等等,而本讲主要对以上功能进行一个实现,并对 ...
- Atitit 图像处理 平滑 也称 模糊, 归一化块滤波、高斯滤波、中值滤波、双边滤波)
Atitit 图像处理 平滑 也称 模糊, 归一化块滤波.高斯滤波.中值滤波.双边滤波) 是一项简单且使用频率很高的图像处理方法 用途 去噪 去雾 各种线性滤波器对图像进行平滑处理,相关OpenC ...
- 简单的JPA注解例子
package ssh.entity; import java.math.BigDecimal; import java.util.Date; import javax.persistence.*; ...
- iOS----关于第三方的运用(有待补充)
第三方东西涵盖哪些内容? 1)第三方SDK 2)第三方框架 3)第三方功能代码的封装开源分享 4)第三方工具类等等 PS:1. 对于一个在正在深入学习的程序员而言,有时候参考学习或者使用一下第三方的东 ...
- Django的Model上都有些什么
Django的Model上都有些什么 modelinfo= ['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__' ...
- Liferay7 BPM门户开发之46: 集成Activiti用户、用户组、成员关系同步
在实际的BPM集成开发过程中,Liferay和Activiti这两个异构的系统之间,用户.组的同步需求非常重要,用来实现签收组的概念,比如指定签收组.会签.抢签都需要用到. Activiti可以通过自 ...
- 找到SQL Server数据库历史增长信息
很多时候,在我们规划SQL Server数据库的空间,或向存储方面要空间时,都需要估算所需申请数据库空间的大小,估计未来最简单的办法就是看过去的趋势,这通常也是最合理的方式. 通常来讲 ...