sql注入,sql语句

#大鹏盛华创意挑战赛#

1

使用ROW_NUMBER() 函数创建用于高效数据分页的存储过程

–在映射表(区域)中创建数据分页的存储过程ALTER PROC usp_Area_datapage@pageIndex INT=1, –页码(默认第一页) @pageSize INT=5, –页面容量(默认页容量5)@ pageCount INT OUTPUT, –总页数(输出到表单显示) @recordCount INT OUTPUT –总项目数(输出到表单显示) ASBEGINSELECT @recordCount=COUNT(*) FROM dbo.Area –总数获取data 条目数SET @pageCount=@recordCount/@pageSize –获取小于等于当前页容量的总页数(从页号开始) –如果有小数点则为总页数+ 1IF @recordCount/@pageSize0 SET @pageCount=@pageCount+1 –通过row_number函数获取分页数据。 SELECT * FROM(SELECT ROW_NUMBER()OVER(ORDER BY ID ASC)AS AId,* FROM dbo.Area)AS aWHERE a.AId BETWEEN (@ pageIndex-1)*@pageSize +1 AND(@pageIndex*@pageSize)END注释:BETWEEN (@pageIndex-1)*@pageSize+1 AND (@pageIndex*@pageSize) (假设页面容量为10(@pageIndex-1)) *@pageSize+1 先页面起始点为: ( 1 -1)*10+1,结果为1 (@pageIndex*@pageSize) 第一页的结束点为: (1*10),结果为10WHERE a.AId BETWEEN (@pageIndex-1)*@ pageSize+ 1 AND(@pageIndex*@pageSize) 第一页数据将为:这里a.AId BETWEEN 1 和10 相当于a.AId=1 和a。AId=10 — 测试存储过程DECLARE @totalpage INT 用于接收输出参数的值。 Value DECLARE @totalrecord INT 用于接收输出参数的值。 EXEC usp_Area_datapage 1,10,@totalpage OUTPUT,@totalrecord OUTPUT — 输出时需要类型转换PRINT N\’总页数\’+CONVERT(VARCHAR(10),@totalpage )PRINT N\’总记录数\’+CAST (@totalrecord AS VARCHAR(10)) 执行数据分页存储过程

1

添加对类库的引用,写入配置文件信息,并将ExecuteDataTable()方法更改为存储过程类型。

public static DataTable SP_ExecuteDataTable(string sp_name, params SqlParameter[] pms){ using (SqlDataAdapter adapter=new SqlDataAdapter(sp_name, constr)) { //将适配器执行类型设置为存储过程adapter.SelectCommand.CommandType=CommandType. StoredProcedure; if (pms !=null) { //运行存储过程并添加参数。 adapter.SelectCommand.Parameters.AddRange(pms); //将查询到的数据放入dt中。 (dt);返回}}2。

绑定表单加载事件显示的数据(如:默认在第一页显示前20条数据)

//声明将用于接收四个变量值的类的成员变量。后面会用到Int RCount=0。 //总项数int PCount=0; //当前页数int PSize=20; //接收分页数据private void Form1_Load(object sender, EventArgs e){ //数据过多Masu.截取20条数据并显示//给存储过程参数赋值SqlParameter[] ps={ //输入参数(默认第一页,页容量20) new SqlParameter(\’@pageIndex\’ ,PIndex), new SqlParameter (\’@pageSize\’,PSize), //输出参数不能直接赋值。只需设置为你数据库中的数据类型即可new SqlParameter(\’@pageCount\’,SqlDbType.Int), new SqlParameter(\’@recordCount \’,SqlDbType.Int) }; //将两个输出参数的类型设置为输出参数ps[2].Direction=ParameterDirection.Output; //执行的方法过程dt=Helper.SQLHelper.SP_ExecuteDataTable(\’usp_Area_datapage\’, ps); //执行完ExecuteDataTable()方法后//用两个输出参数获取传递的value //给显示标签赋值对应的值label //获取存储过程返回的总页数PCount=Convert.ToInt32(ps[2].Value) //Label 显示总页数lbPCount.Text=PCount.ToString(); //获取存储过程返回的项目总数RCount=Convert.ToInt32(ps[3].Value); //标签将显示项目总数lbRCount.Text=RCount . ToString(); //设置页面容量文本框txtPSize.Text=PSize.ToString(); //绑定数据dgv1.DataSource=dt; //绑定页码显示文本(int i=1; i=(int )ps[2].Value; i++ ) { cmbPageIndex.Items.Add(i); ////第一个选项添加到下拉列表框中//cmbPageIndex.Items.Insert(0, \’请选择\’) ; //默认选中第一页cmbPageIndex.SelectedIndex=0; //下拉列表框显示的高度cmbPageIndex.DropDownHeight=350;}

:1) 将参数设置为输出参数的类型。 2) 将页码和所选选项添加到下拉列表框中。

3

在页面容量文本框控件中添加文本框更改事件,以便在页面容量数字发生变化时重新加载数据。

private void txtPSize_TextChanged(object sender, EventArgs e){ //检测输入字符串是否为大于0的正整数(自己写) //如果没有检测到则抛出异常Reported PSize=Convert.ToInt32( txtPSize.Text); //获取当前页码PIndex=cmbPageIndex.SelectedIndex + 1; //给参数赋值SqlParameter[] ps={ new SqlParameter(\’ @pageIndex\’,PIndex), new SqlParameter(\’@ pageSize\’,PSize), //输出参数。不能直接赋值。只需将其设置为数据库的数据类型即可。 new SqlParameter(\’@pageCount\’,SqlDbType.Int), new SqlParameter(\’@recordCount\’,SqlDbType.Int) }; //设置两个输出参数的类型为输出参数ps[2].Direction=ParameterDirection .Output ; //执行存储过程的方法dt=Helper. SQLHelper.SP_ExecuteDataTable(\’usp_Area_datapage\’, ps); //执行ExecuteDataTable()方法后//获取两个输出参数中传递的值//替换显示标签对应的值//设置总数检索存储过程返回的页数PCount=Convert.ToInt32(ps[2].Value); //标签显示总页数lbPCount.Text=PCount.ToString(); //存储返回的项目总数procedure RCount=Convert.ToInt32(ps[3].Value); //标签显示项目总数Text=RCount.ToString() //重新绑定数据To do。 /清除之前添加的页码选项cmbPageIndex.Items.Clear(); //显示页码绑定的文本(int i=1 ; i=PCount; i++) { cmbPageIndex.Items.Add( i) } //默认选择第一页cmbPageIndex.SelectedIndex=0;} 更改数字显示分页数据

为下拉列表框添加索引更改事件(cmbPageIndex_SelectedIndexChanged)

private void cmbPageIndex_SelectedIndexChanged(object sender, EventArgs e){ //检测输入字符串是否为大于0的正整数(自己写) //如果没有检测到则抛出异常Reported PSize=Convert.ToInt32( txtPSize.Text); //获取当前页码PIndex=cmbPageIndex.SelectedIndex + 1; //PIndex=Convert.ToInt32(cmbPageIndex.Text); //设置参数中的值赋值SqlParameter[] ps={ new SqlParameter ( \’@pageIndex\’,PIndex), new SqlParameter( \’@pageSize\’,PSize), //输出参数不能直接赋值。只需要设置为你数据库的数据类型new SqlParameter(\’@pageCount\’,SqlDbType.Int), new SqlParameter(\’@recordCount\’,SqlDbType.Int ) }; //设置两个输出参数的类型将输出参数设置为ps[2].Direction=ParameterDirection.Output ps[3].Direction=ParameterDirection;Output; //执行存储过程的方法dt=Helper.SQLHelper./执行/ExecuteDataTable()方法后, //检索两个输出参数传递的值。为标签分配相应的值并显示//获取存储过程返回的总页数PCount=Convert.ToInt32(ps[2].Value) //标签将显示总页数lbPCount; Text=PCount.ToString(); //获取存储过程返回的项目总数RCount=Convert.ToInt32(ps[3] .Value) //显示的标签总数lbRCount .Text=RCount.ToString () ; //重新绑定数据dgv1.DataSource=dt; //设置下拉列表框中显示的文本cmbPageIndex.Text=(cmbPageIndex.SelectedIndex + 1);

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/657390.html

(0)
上一篇 2024年5月29日
下一篇 2024年5月29日

相关推荐

  • 和平精英雪人皮肤怎么获得?

    和平精英雪人皮肤怎么获得? 方法/步骤分步阅读: 第一步,打开手机上的和平精英,进入游戏页面,点击活动选项。 第二步,进入之后,点击冰雪送祝福兑永久动作选项。 第三步,点击累计签到,完成签到就可以获得雪人。 第四步,最后点击每日任务,完成每日任务就可以获得雪人 和平精英的和平人生怎么领衣服? 首先你点击和平人生,再点击活动就可以领衣服了 和平精英猫怎么领? …

    游戏快讯 1小时前
  • 和平精英激光导弹怎么才会跟踪?

    和平精英激光导弹怎么才会跟踪? 人工控制的追踪导弹,玩家发射导弹后,移动视角,导弹也会跟着移动,也就是导弹能进行跟枪,威慑力很强,不像普通火箭炮发射后落点固定容易被躲避。 打开瞄准镜后会进行实时测距,显示准星对准的地点与自身的距离,虽然对这把武器没什么加成,给队友报点可以用“前方有敌人”,但还是有点用处,科技感十足。 无论开镜还是腰射,都可以通过准星控制导弹…

    游戏快讯 4小时前
  • 和平精英怎么解除精英手册?

    和平精英怎么解除精英手册? 和平精英手册怎么解除 赛季结束后手册会自动消失。 精英手册会显示玩家等级,这个是无法人为解除的。 只能等当前赛季的时间结束了,精英手册就会刷新,下赛季又可以重新领取一本新的手册。 和平精英每个赛季都有精英手册,完成对应的任务,即可获得丰富的奖励。 和平精英战队怎么解除? 1、点击和平精英,进入和平精英主界面,找到左下角的赛季,点击…

    游戏快讯 5小时前
  • 和平精英钻石多少分? 和平精英钻石兑换的皮肤?

    和平精英钻石多少分? 和平精英是一款备受欢迎的多人在线战斗游戏,其等级制度采用分段评分的方式,玩家可以通过游戏中的胜利与失败来积累积分,从而不断提升自己的等级,在游戏中获得更多的荣誉和奖励。关于这个问题,实际上并不存在一个固定的答案。因为钻石是一种游戏道具,而游戏道具的获取方式有很多种,如充值、参加活动、抽奖等。一般而言,充值是得到游戏道具最直接的方式之一。…

    游戏快讯 7小时前
  • 和平精英入门教学女生怎么玩?

    和平精英入门教学女生怎么玩? 和平精英是一款非常热门的射击游戏,女生也可以很好地玩。 首先,要了解游戏的操作和规则,熟悉地图和武器的特点和优劣势。 其次,建议在游戏中多练习射击技巧,不断提高自己的反应速度和精准度。同时,也要注意保护自己,学会躲避和规避危险。 最后,要多和队友沟通,协作作战,增加胜利的机会。总之,只要认真学习和练习,女生也可以在和平精英中玩得…

    游戏快讯 10小时前