首页 > 数据库 >存储过程分页以及参数拼接sql语句

存储过程分页以及参数拼接sql语句

时间:2024-02-19 16:15:25浏览次数:21  
标签:语句 parameters -- System SqlClient 拼接 sql Data SqlParameter

1.C#调用存储过程,带参数返回的功能,而且是参数化拼接,这样就可以防止sql注入

System.Data.SqlClient.SqlParameter[] parameters = {                                                   

new System.Data.SqlClient.SqlParameter("@i",100),                                                  

new System.Data.SqlClient.SqlParameter("@j",100),                                                  

new System.Data.SqlClient.SqlParameter("@he", System.Data.SqlDbType.Int) 
};
parameters[2].Direction = System.Data.ParameterDirection.Output;
var slt = this.DbContext.Database.SqlQuery<int>("exec pro_Add @i,@j,@he output", parameters);
slt.ToList();
int AllCount = Int32.Parse(parameters[2].Value.ToString());

 

===

System.Data.SqlClient.SqlParameter[] parameters = { new System.Data.SqlClient.SqlParameter("@i",100), new System.Data.SqlClient.SqlParameter("@j",100), new System.Data.SqlClient.SqlParameter("@he", System.Data.SqlDbType.Int) }; parameters[2].Direction = System.Data.ParameterDirection.Output; var slt = this.DbContext.Database.SqlQuery<int>("exec pro_Add @i,@j,@he output", parameters); slt.ToList(); int AllCount = Int32.Parse(parameters[2].Value.ToString());  

2.存储过程分页的功能实现

create procedure paging_procedure ( @pageIndex int, -- 第几页 @pageSize int -- 每页包含的记录数 ) as begin select top (select @pageSize) * -- 这里注意一下,不能直接把变量放在这里,要用select from (select row_number() over(order by sno) as rownumber,* from student) temp_row where rownumber>(@pageIndex-1)*@pageSize; end -- 到时候直接调用就可以了,执行如下的语句进行调用分页的存储过程 exec paging_procedure @pageIndex=2,@pageSize=10;

3.存储过程中处理,条件中带IN的语句

--例如: SELECT * FROM tb WHERE id IN (1, 2, 3, 4, ........) AND NAME = 'best' --1.将括号的条件做成变量 DECLARE @str VARCHAR(4000) SET @str = '1,2,3,4,5.......' --2.然后将@s拆分后插入临时表 CREATE TABLE #t ( id VARCHAR(10) ) DECLARE @i INT DECLARE @len INT SET @i = 1 WHILE @i < LEN(@str + ',') BEGIN INSERT #t SELECT SUBSTRING(@str + ',', @i, CHARINDEX(',', @str + ',', @i) -@i) SET @i = CHARINDEX(',', @str + ',', @i) + 1 END --3利用临时表和原表进行连接取值 SELECT k.* FROM tb k INNER JOIN #t p ON p.id = k.id WHERE NAME = 'best'

 


__EOF__

 

2024-02-19 15:56:38【出处】:https://www.cnblogs.com/Mr-Worlf/p/13915483.html

=======================================================================================

标签:语句,parameters,--,System,SqlClient,拼接,sql,Data,SqlParameter
From: https://www.cnblogs.com/mq0036/p/18021332

相关文章

  • Docker安装MySQL容器
    Docker安装MySQL容器查看原文安装MySQL#查找官方镜像dockersearchmysql#下载mysql镜像sudodockerpullmysql:5.7#检查当前所有Docker下载的镜像dockerimages启动MySQL容器dockerrun-p3306:3306--namemysql\-v/usr/local/docker/mysql/conf:/etc/mysq......
  • linux下安装MySql
    linux下安装MySql查看原文点击下载地址,选择版本8.0.26系统为linux-Generic,下载安装包mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz解压安装包#如果有mariadb包,需要提前卸载!!!!!!!!#tar.xz无法直接解压#将tar.xz转换为tarxz-dmysql-8.0.26-linux-glibc2.12-x86_64.tar.x......
  • mysql-udf-http插件的安装与使用
    mysql-udf-http插件的安装与使用查看原文安装curl点击下载地址,下载curl-7.69.0.tar.gz#解压curl-7.69.0.tar.gztar-zvxfcurl-7.69.0.tar.gzcdcurl-7.69.0#配置安装路径./configure-prefix=/usr/local/curl#进行安装make&&makeinstall安装mysql-udf-http点......
  • 02 SQL更新语句执行流程
    02SQL更新语句执行流程与查询流程不一样的是,更新流程还涉及两个重要的日志模块。​redolog(重做日志)和binlog(归档日志)​redolog物理日志binlog逻辑日......
  • Android家庭记账本开发第四天:SQLite数据库操作
    SQlite数据库是一个轻量级的数据库,被用在嵌入式设备上,2019年6月还在流行的两大移动终端操作系统,Android和ios都支持这款数据库。AndroidSDK中有一个包android.database.sqlite,其中专门对SQLite数据库进行了封装,并提供了一套供android使用的API。SQLiteOpenHelper 类包含一组用......
  • 01 MySQL的基本架构
    前言:记录对林晓斌老师的《MySQL实战45讲》课程学习路程。01MySQL的基本架构MySQL的逻辑架构图MySQL分为Server层和存储引擎层两部分。Server层功能:实现所有跨存储引擎的功能,比如存储过程、触发器、视图等。连接器、查询缓存、分析器、优化器、执行器等,以及......
  • Kettle如何连接SQL Server和问题处理
    简介Kettle(也称为PentahoDataIntegration)是一款开源的ETL(Extract,Transform,Load)工具,由Pentaho开发。ETL是指从一个数据源(通常是数据库)中提取数据,进行转换,然后加载到目标系统中。Kettle为数据集成和数据仓库开发提供了强大的工具和功能。环境kettle版本:7.1数据库......
  • 2 分钟,了解 4 个极为有用的 MetricsQL 函数
    夜莺社区的朋友如果问时序库的选型,我一般都会推荐VictoriaMetrics,除了其性能、稳定性、集群扩展能力之外,VictoriaMetrics还扩展了PromQL,提供了MetricsQL,即增强了PromQL的能力。比如下面介绍的场景,就很适合用MetricsQL来解决。需求某个指标(假设指标名字是interface_sta......
  • 一条SQL更新了整个表,如何回退
    背景:我们的一些业务测试系统,数据库一般也是由开发同事自行维护,所以不可避免会有一些问题,经常会有开发同事火急火燎的打电话给我们,如果语气急切,态度恭谨,一般就是误操作数据了(八九不离十)。最近我们就遇到了一起误更新数据的事件。由于update SQL编写问题,开发同事将整个表的一个......
  • centos 7安装sql server 2019
    1.下载安装包: 参考地址:https://packages.microsoft.com/rhel/7/mssql-server-2019/mssql-server-15.0.4083.2-15.x86_64.rpm 找一个自己喜欢的版本,下载下来。或者找大神们的百度网盘也行。2.将文件拷贝到虚拟机目录,运行如下命令开始安装。 3.安装的时候出现缺少依赖包,使......