多个可选 WHERE 参数

2024-03-19

我想为一组 SQL 查询创建一个过滤器,以便用户可以按最多三个值过滤 SQL SELECT。 用户界面具有三个文本框,每个文本框都与 SQL 表中的列名称相关联。用户可以通过这些文本框提供一个、两个或三个标准。

这是我到目前为止所拥有的。我知道if(textbox...声明不起作用,但我找不到方法来做到这一点。 (使用"SELECT TOP 10 primaryFile FROM dbo.basket WHERE (basket.itemGuid = @itemguid) AND (basket.batchid = @batchid) AND (basket.account = @account"不会返回任何结果。

private List<string> GetSnippets()
{
    List<string> snippets = new List<string>();

    string connectionString = @"SNIP";
    //string sql = @"SELECT TOP 10 primaryFile FROM dbo.basket WHERE";
    string sql = @"SELECT TOP 10 primaryFile FROM dbo.basket WHERE (basket.itemGuid = @itemguid) AND (basket.batchid = @batchid) AND (basket.account = @account)";
    //if (textBoxGUID.Text.Length > 0) sql += " basket.itemGuid = @itemguid";
    //if (textBoxBatchID.Text.Length > 0) sql += " basket.batchid = @batchid";
    //if (textBoxAccount.Text.Length > 0) sql += " basket.account = @account";

    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlCommand command = new SqlCommand(sql, connection))
    {
        command.Parameters.AddWithValue("@itemguid", textBoxGUID.Text);
        command.Parameters.AddWithValue("@batchid", textBoxBatchID.Text);
        command.Parameters.AddWithValue("@account", textBoxAccount.Text);

        try
        {
            connection.Open();
            if (connection.State == ConnectionState.Open)
            {
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        snippets.Add((string)reader["primaryFile"]);
                        Console.WriteLine(reader["primaryFile"]);
                    }
                }
            }
        }
        catch (Exception)
        {
            throw;
        }
    }
    return snippets;
}

我会将 where 子句分开并根据需要附加到它后面。

string sql = @"SELECT TOP 10 primaryFile FROM dbo.basket ";
string where = "";
if (textBoxGUID.Text.Length > 0) 
{
    if(where.Length > 0 ) where += "AND "
    where += " (basket.itemGuid = @itemguid) ";
}
if (textBoxBatchID.Text.Length > 0) 
{
    if(where.Length > 0 ) where += "AND "
    where += " (basket.batchid = @batchid) ";
}
if (textBoxAccount.Text.Length > 0) 
{
    if(where.Length > 0 ) where += "AND "
    where += " (basket.account = @account) ";
}
if(where.Length > 0) {
    sql += "WHERE " + where;
}

然后您必须执行相同的操作将参数添加到命令中:

if (textBoxGUID.Text.Length > 0) command.Parameters.AddWithValue("@itemguid", textBoxGUID.Text);
if (textBoxBatchID.Text.Length > 0) command.Parameters.AddWithValue("@batchid", textBoxBatchID.Text);
if (textBoxAccount.Text.Length > 0) command.Parameters.AddWithValue("@account", textBoxAccount.Text);

这是更多的代码,但它允许您准确搜索提供的参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个可选 WHERE 参数 的相关文章

  • 如何使用 openSSL 函数验证 PEM 证书的密钥长度

    如何验证以这种方式生成的 PEM 证书的密钥长度 openssl genrsa des3 out server key 1024 openssl req new key server key out server csr cp server
  • C# 中的 Stack<> 实现

    我最近一直在实现递归目录搜索实现 并且使用堆栈来跟踪路径元素 当我使用 string Join 连接路径元素时 我发现它们被颠倒了 当我调试该方法时 我查看了堆栈 发现堆栈内部数组中的元素本身是相反的 即最近 Push 的元素位于内部数组的
  • 在 C 语言中,为什么数组的地址等于它的值?

    在下面的代码中 指针值和指针地址与预期不同 但数组值和地址则不然 怎么会这样 Output my array 0022FF00 my array 0022FF00 pointer to array 0022FF00 pointer to a
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • MVC 5 中具有 ASP.NET Identity 的 Autofac 不会验证 OWIN 管道中的安全标记

    我在 MVC 5 中设置了 AutoFac 来与 ASP NET Identity 一起使用 表面上一切似乎都工作正常 即用户可以创建帐户并登录 但后来我发现 当安全标记更改时 用户不会注销 通过在 AspNetUsers 表中进行暴力破解
  • JavaScript 错误:MVC2 视图中的条件编译已关闭

    我试图在 MVC2 视图页面中单击时调用 JavaScript 函数 a href Select a JavaScript 函数 function SelectBenefit id code alert id alert code 这里 b
  • C# 根据当前日期传递日期时间值

    我正在尝试根据 sql server 中的两个日期获取记录 Select from table where CreatedDate between StartDate and EndDate我通过了5 12 2010 and 5 12 20
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • MySQL 连接器 C++ 64 位在 Visual Studio 2012 中从源代码构建

    我正在尝试建立mySQL 连接器 C 从源头在视觉工作室2012为了64 bit建筑学 我知道这取决于一些boost头文件和C 连接器 跑步CMake生成一个项目文件 但该项目文件无法编译 因为有一大堆非常令人困惑的错误 这些错误可能与包含
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions
  • SQLAPI++ 的免费替代品? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何免费 也许是开源 的替代品SQLAPI http www sqlapi com 这个库看起来
  • 在哪里可以找到 Microsoft.Build.Utilities.v3.5

    如何获取 Microsoft Build Utilities v3 5 我正在使用 StyleCop 4 7 Stylecop dll 中的 StyleCop msbuild 任务似乎依赖于 Microsoft Build Utilitie
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • 在 C# 的 WebAPI 中的 ApiController 上使用“传输编码:分块”提供数据

    我需要服务分块传输使用编码数据API控制器 因为我无权访问HttpContext or the Http请求 我有点不知道在哪里写入响应以及在哪里刷新它 设置如下 public class MyController ApiControlle
  • 如何获取带有某个属性注释的所有属性?

    我刚刚从 Roslyn 开始 我想找到所有用属性名称 OneToOne 注释的属性 我启动了 SyntaxVisualizer 并能够获取对该节点的引用 但我想知道是否有更简单的方法来实现此目的 这就是我所拥有的 var prop docu
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p

随机推荐

  • Java 项目的 SLOC

    我需要一个免费工具来计算 Java 项目的 SLOC 我只需要以下指标 SLOC 注释行数 可选地javadoc 指标 可选地按文件类型 java js css html xml 等 对统计信息进行排序 Bonus 100 Java 我不喜
  • Python Base 36 编码

    如何在 Python 中以 36 为基数对整数进行编码 然后再次解码 您尝试过维基百科的示例代码吗 def base36encode number alphabet 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
  • Django TypeError:没有主键值的模型实例是不可散列的

    我有我的models py如下 class Article models Model date models DateTimeField null True blank True title models TextField default
  • 如何根据用户摘要生成随机 5 位数字

    大家好 我尝试根据用户总摘要生成 50 个 5 位数字 例如 用户给出 500000 然后我需要随机数 5 位乘 50 个数字等于 500000 我尝试了这个 但它不是 5 位数字 int balane 500000 int nums 50
  • 双向git镜像

    我有兴趣将本地 git 存储库设置为远程存储库的镜像 我读过一些可能相关的帖子 但主要区别是我需要对两个存储库具有读写访问权限 大多数时候 用户将针对 Repo A 进行工作 但有时他们会针对 Repo B 进行工作 并且这些需要通过服务器
  • 统计某个时间段之前和之后存在的值

    我有以下简单的表格 您也可以在SQL Fiddle here http www sqlfiddle com 9 74d8fb 3 CREATE TABLE Orders Customer TEXT Order Date DATE INSER
  • 带有 CSS 的 GWT Html 文件

    当我使用 GWT 插件创建新项目时 它会为我创建一个框架项目 在html文件中有一条注释说 考虑内联 CSS 以减少请求的文件数量 为什么我要考虑使用内联CSS 我很难将 css 放在单独的文件中而不是内联 会减少文件的大小吗 不是吗 答案
  • 检查 Wicket 中的用户代理

    我使用的是 wicket 1 5 但我无法在getClientInfo 方法 WebRequest RequestCycle get getRequest 我在其他地方看到了这段代码 WebClientInfo clientInfo Web
  • YARN 作业历史记录不可访问

    我正在使用来自源代码的最新 hadoop 版本 3 0 0 我已经启动并运行了时间轴服务 并配置了 hadoop 以将其用于作业历史记录 但是 当我单击资源管理器 UI 中的历史记录时 出现以下错误 HTTP ERROR 404 Probl
  • 如果在从开始到结束迭代时对地图元素调用擦除()会发生什么?

    在下面的代码中 我循环遍历地图并测试是否需要删除元素 擦除元素并继续迭代是否安全 或者我是否需要在另一个容器中收集密钥并执行第二个循环来调用擦除 map
  • 无法调整大小的 JFrame 包错误

    JFrame s pack 当窗口无法调整大小时 该方法不会每次都起作用 请亲自尝试一下 可能需要重试几次 import javax swing import java awt public class FramePackBug publi
  • Eclipse javadoc 注释中的错误换行

    我认为 Eclipse 内置的 Java 格式化程序中有一个小但烦人的错误 我有一个 Javadoc 注释 如下所示 stuff code mTasksBelow 其中末尾的句点位于第 81 列中 格式化程序设置为在第 80 行包装 Jav
  • 如何在Python中正确实现映射协议?

    我正在使用 python spidermonkey 它在内部使用 PyMapping Check 来识别用作全局对象 在 rt new context global 中 是否实现了映射协议 这基本上是传递给 python spidermon
  • 更改 Magento 的“新产品”模块的默认产品限制

    据我了解 默认情况下 Magento 的 新产品 模块 new phtml 显示列出的最后 8 个产品 如何更改默认值 甚至可能完全删除限制 是的 这将完全改变 新产品 模块的行为 我理解 谢谢你 新产品块 Mage Catalog Blo
  • 视频错误:V4L:找不到摄像头设备

    我正在使用 ubuntu16 04 并尝试运行 opencv 脚本 当我使用时 video capture cv2 VideoCapture 1 它给我错误视频错误 V4L 找不到相机设备 没有打开视频窗口 但当我跑步时 video cap
  • 从函数获取输入 - C++ [重复]

    这个问题在这里已经有答案了 我在 C 中遇到了一个问题 我调用了一个为事物分配一些值的函数 但这些分配在函数完成后丢失了 这是我的代码 include
  • 如何缩小 Node.js 应用程序? (服务器端node.js,而不是客户端javascript)

    我想将我所有的大型 Node js 项目 编译 成一个巨大的 javascript 文件 然后我可以使用 Node Index js 运行它并开箱即用 Thanks 您可以使用 Browserify 来完成此操作 使用 bare可以选择忽略
  • 编译器看不到接口中的默认实现?

    这是我在一个 c 项目中的代码 该项目针对 NET Core 3 0 所以我应该使用 C 8 0 和 Visual Studio 2019 16 3 9 public interface IJsonAble public string To
  • 具有 JavaScript 执行功能的 Node.js Web 浏览器

    有没有node npm该模块将抓取网页或给定 URL 的内容 并像现实生活中的 Web 浏览器一样执行和评估其 JavaScript 包括XMLHttpRequest对象和类似的东西 我以为刮刀js https www npmjs com
  • 多个可选 WHERE 参数

    我想为一组 SQL 查询创建一个过滤器 以便用户可以按最多三个值过滤 SQL SELECT 用户界面具有三个文本框 每个文本框都与 SQL 表中的列名称相关联 用户可以通过这些文本框提供一个 两个或三个标准 这是我到目前为止所拥有的 我知道