c# - 检查结果是否来自 SQL 中的特定表

标签 c# mysql asp.net

我的网站上有搜索功能。它在我的数据库中搜索电影、歌曲或书籍,所有这 3 个都在不同的表中。 现在假设我希望每个表的 SearchResult.aspx 都不同。例如,电影显示在列表中,歌曲显示在 GridView 中,书籍显示在标签中。

为此,当我使用 C# 设置我的页面时,我必须知道结果来自哪个表。这可以做到吗?

编辑:搜索是用户输入的字符串。 stackoverflow 上的普通搜索文本框:

<asp:TextBox ID="TextBoxSearch" CssClass="form-control" placeholder="Search" runat="server"></asp:TextBox>

我在想什么:

if(search is from tableMovies){
DisplayMovieList();
}
else if(search is from tableSongs){
DisplaySongs();
}
else{
DisplayBook();
}

也许有一种我没有想到的不同方法来做到这一点,它一定是可能的,对吧?因为例如 imdb 允许您使用相同的搜索框和相同的搜索结果页面搜索 Actor 和电影。

我发送搜索值的代码:

Response.Redirect("SearchResult.aspx?Result=" + TextBoxSearch.Text);

编辑:在 Tim Schmelters 的帮助下工作解决方案回答:

SQL:

SELECT Table1.Col1, 'Table1' As Type FROM Table1 WHERE (Table1.ColId=@param)
UNION ALL
SELECT Table2.Col2, 'Table2' As Type FROM Table2 WHERE (Table2.ColId=@param);

C#:

using (SqlDataReader reader = cmd.ExecuteReader())
{
   if (reader.Read())
   {
      Label1.Text = reader.GetString(reader.GetOrdinal("Type"));
   }
}

上面给了我类型。现在我可以使用该类型来构造一些 if 语句,在这些语句中我根据结果来自哪个表来隐藏/显示服务器控件,感谢您为我指明了正确的方向 Tim :)

最佳答案

这有点抽象,因为您还没有显示您的查询,但我想您可以这样做:

SELECT * FROM
(
    SELECT Col1, Col2, 'Movie' As Type
    FROM dbo.Movie
    WHERE ....

    UNION ALL

    SELECT Col1, Col2, 'Book' As Type
    FROM dbo.Book
    WHERE ....

    UNION ALL

    SELECT Col1, Col2, 'Song' As Type
    FROM dbo.Song
    WHERE ....
) x
ORDER BY Col1, Col2, Type

现在您有了 Type,您可以使用 ifswitch

关于c# - 检查结果是否来自 SQL 中的特定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28603237/

相关文章:

c# - 大量使用 LOH 会导致严重的性能问题

c# - 如何通过保留 IGrouping 来过滤 IGrouping 的 IEnumerable 的元素

c# - 如何导出到 Excel?

php - 如何将 BackgroundWorker 的结果设置为 TextView

css - 样式表未加载 checkin TFS 的元素(通过 visual studio online)

c# - 如何配置 WCF 以将 HTTP 与客户端证书一起使用?

mysql - 如何在 servlet 中使用带有 session 值的 where 子句

php - 如何从 PHP 在 mySQL 中插入/创建存储过程?

javascript - 如何在 ASP.NET 文字控件中动态显示图像

ASP.NET AJAX AsyncFileUpload UploadedComplete 不触发