using System;
using System.Data;
using System.Data.SqlClient;
using System.Text; namespace WindowsFormsApp1
{
public class SQLHelper
{
static string connStr = "Data Source='.';Initial Catalog='DBName';User ID='sa';Password='123456';Connect Timeout=60000;"; /// <summary>
/// 带临时查询表sql
/// </summary>
/// <param name="Sql"> 查询sql </param>
/// <param name="CreateTmpTablesql"> 创建临时表语句 </param>
/// <param name="TmpTableName">在数据库中创建临时表sql</param>
/// <param name="TmpData">临时表数据</param>
public static DataSet GetDataTmpTableSqlBulkCopy(string Sql, string CreateTmpTablesql, string TmpTableName, DataTable TmpData)
{
//构造SQL语句
StringBuilder sb = new StringBuilder();
#region 处理临时表数据为空则不处理临时表
using (SqlConnection thisConn = new SqlConnection(connStr))
{
try
{
thisConn.Open();
if (!string.IsNullOrEmpty(CreateTmpTablesql) && !string.IsNullOrEmpty(TmpTableName) && TmpData != null)
{
//创建临时表
SqlCommand cmd = new SqlCommand(CreateTmpTablesql.ToString(), thisConn);
object returnValue = cmd.ExecuteScalar();
// 使用 SqlBulkCopy 批量保存临时表数据
SqlBulkCopy bulkCopy = new SqlBulkCopy(thisConn);
bulkCopy.DestinationTableName = TmpTableName;
bulkCopy.BatchSize = TmpData.Rows.Count;
bulkCopy.WriteToServer(TmpData);
}
//查询带临时表的sql
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(Sql, thisConn);
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
return null;
}
finally
{
thisConn.Close();
}
}
#endregion
}
}
}
// 测试调用
private void Button1_Click(object sender, EventArgs e)
{
// 创建临时表sql语句
string CreateTmpTablesql = @"select top 1 MethodName into #tmpTable from AbpAuditLogs";
DataTable dataTable = new DataTable();
dataTable.Columns.Add("MethodName");
foreach (var item in "Index,GetAll".Split(','))
{
DataRow row = dataTable.NewRow();
row["MethodName"] = item;
dataTable.Rows.Add(row);
}
string sql = @"select * from AbpAuditLogs a where exists ( select * from #tmpTable tmp where a.MethodName= tmp .MethodName ) ";
DataSet ds = SQLHelper.GetDataTmpTableSqlBulkCopy(sql, CreateTmpTablesql, "#tmpTable", dataTable);
}

Ado.Net查询语句使用临时表做条件的更多相关文章

  1. SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询

    背景&痛点 通过ES进行查询,如果需要新增查询条件,则每次都需要进行硬编码,然后实现对应的查询功能.这样不仅开发工作量大,而且如果有多个不同的索引对象需要进行同样的查询,则需要开发多次,代码复 ...

  2. SEC6 - MySQL 查询语句--------------进阶2:条件查询

    # 进阶2:条件查询 /* 语法: select 查询列表 from 表名 where 筛选条件; 分类: 一.按照条件表达式筛选 条件运算符:> < = !=(等价于<>) ...

  3. 高性能mysql-----MySQL_explain关键字分析查询语句(一)

    转载地址:https://www.cnblogs.com/xpp142857/p/7373005.html   MySQL_explain关键字分析查询语句 通过对查询语句的分析,可以了解查询语句的执 ...

  4. MySQL_explain关键字分析查询语句

    版权声明:本文为博主原创文章,转载请注明出处. 通过对查询语句的分析,可以了解查询语句的执行情况.MySQL中,可以使用EXPLAIN语句和DESCRIBE语句来分析查询语句. EXPLAIN语句的基 ...

  5. SQL注入之MySQL常用的查询语句

    MySQL是一种使用很广的数据库,大部分网站都是用MySQL,所以熟悉对MySQL数据库的注入很重要. 首先来说下MySQL注入的相关知识点 在MySQL5.0版本之后,MySQL默认在数据库存放一个 ...

  6. ORACLE中查询语句的执行顺及where部分条件执行顺序测试

    Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...

  7. linq字符串搜索条件,排序条件-linq动态查询语句 Dynamic LINQ

    在做搜索和排序的时候,往往是前台传过来的字符串做条件,参数的数量还不定,这就需要用拼sql语句一样拼linq语句.而linq语句又是强类型的,不能用字符串拼出来. 现在好了,有个开源的linq扩展方法 ...

  8. Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)

    Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...

  9. Mybatis 的分页条件查询语句编写

    刚来到一家新公司, 翻看项目代码, 发现一位同事写的查询逻辑很好, 不用插件, 一个语句完成了分页条件查询. 而我之前一般都是在业务层对参数进行判断, 如果有条件,就调用条件查询的方法, 如果没有条件 ...

随机推荐

  1. mysql 分组和排序

    mysql> select * from table1; +----------+------------+-----+---------------------+ | name_new | t ...

  2. 解决Shell脚本$'\r': command not found问题

    造成这个问题的原因是Windows下的空行,我们只需要把文件转成unix就好 Centos下,执行yum install dos2unix,然后dos2unix [file],再执行shell命令就好 ...

  3. go 指南学习笔记

    1   If  for 后面没有小括号.后面的花括号,要在当前行,并且中间有内容,右花括号要单独一行. 因为go会格式化代码,自动插入分号. 2 函数和方法的区别: 方法需要有一个接受者(select ...

  4. NIO 选择器 Selector

    选择器提供选择执行已经就绪的任务的能力,这使得多元 I/O 成为可能.就像在第一章中描述的那样,就绪选择和多元执行使得单线程能够有效率地同时管理多个 I/O 通道(Channels).C/C++代码的 ...

  5. -bash: /bin/grep: Argument list too long和 find: Arguments to -type should contain only one letter报错处理

    由于要查找的文件太多 过滤成只找具体时间一天以内的文件 | 查找最近30分钟修改的当前目录下的.php文件 查找最近24小时修改的当前目录下的.php文件 查找最近24小时修改的当前目录下的.php文 ...

  6. tensorflow运行时openssl与boringssl兼容性问题

    tensorflow中,grpc使用boringssl进行加密,boringssl是google基于openssl自行开发的一条分支,有许多相同函数,但底层实现以及支持的加密类型有不同. 且tenso ...

  7. C++多线程下出现内存越界问题总结

    工作中遇到这样一个问题,某个多级流水多线程的程序,在压力测试下会偶现segmentation fault11错误,错误出现在运行类函数的地方,而后排查后发现是由于多线程争抢导致类被析构后才走入判断,导 ...

  8. spring @Autowired注入map

    注入map,平常一般不会这么做,今天看一段老代码时发现有这么个用法.补习一下. @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会 ...

  9. Xamarin图表开发基础教程(4)OxyPlot框架

    Xamarin图表开发基础教程(4)OxyPlot框架 XamaminAndroid中绘制线图OxyPlotAndroidDemo [示例1-1:OxyPlotAndroidDemo]下面实现线图的绘 ...

  10. ttyS 串口名称被占用

    ttyS 的串口设备名称,我一直觉得是没有问题的,今天才想起来,8250驱动命名了 ttyS的名称,需要将 8250 的驱动删除 , ttyS 的串口名称即可正常使用. 如下 这样 ttyS 的名称即 ...