【问题标题】:dynamic query generated by stored procedure or function存储过程或函数生成的动态查询
【发布时间】:2011-05-11 11:02:34
【问题描述】:

我有一个包含 4 列的网格,即 C#.net 中的标题、描述、关键字、日期 带有搜索按钮和文本框。

当我写标题+描述+关键字+日期时,它会通过点击搜索按钮返回相关数据。

如果我写关键字+日期+保持描述和标题为空,它将从网格返回相关数据。等等这4列的其他组合。

即从每一列的字段中搜索,组合动态变化

我想在 SQL SERVER 中为它创建一个存储过程或函数。有什么建议吗?..提前谢谢

【问题讨论】:

  • 您的问题解决了吗?如果是,那么如果您认为任何答案确实有帮助,请将其标记为已接受。

标签: c# sql-server


【解决方案1】:

您可以创建一个包含四个参数(每个参数供您选择)并遵循 SQL 的过程

CREATE PROC Search(
  @title VARCHAR(20) NULL, ...
AS SELECT * FROM your_table WHERE (title = @title OR @title IS NULL) etc.

无论如何,您应该解析输入以获取每个参数的值。因此,当您将 null 传递给 @title 参数时,WHERE 条件 (title = @title OR @title IS NULL) 永远都是真的。

【讨论】:

  • 我正在尝试创建过程,但问题是如何组合这 4 个参数,因为运行时需要用户想要搜索的参数组合
  • 是不是表示不知道用户如何填写输入框?你能发送一个用户输入的例子吗?
  • 我的问题解决了。我是这个页面的新手,所以不允许发布我的要求的屏幕...谢谢你的帮助...
【解决方案2】:

在C#中创建一个函数,传递给它包含列名和表名的字符串数组,这个函数将返回查询字符串。

public string BuildQuery(string[] columnNames, string tableName)
{
string query = string.Empty;

query = "SELECT ";
foreach(string str in columnNames)
query += str + ", ";
query = query.Substring(0, query.Length - 1);
query += " FROM " + tableName;

return query;
}

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 2023-03-26
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    相关资源
    最近更新 更多