SQL列是true还是false - 使用视图?

时间:2010-12-04 09:44:37

标签: c# asp.net sql vb.net

简单的问题,我有一个应用程序,取决于您是在管理系统还是在公共网站上,我想要显示不同的结果。

示例:在管理中的新闻报道的数据库中,我可以将列值'showonsite'设置为false。所以我希望这只在管理面板中显示,而不是在现场网站上显示。

我的问题是,因为我需要相同的信息只有一个列更改,实时网站只显示真值和管理显示两者。没有复制粘贴代码,最有效的方法是什么?

由于

3 个答案:

答案 0 :(得分:3)

请参阅第二个查询。

我可能会遗漏一些东西。对于非管理员用户,您是否只是 SELECT新闻故事且showonsite列设置为false?

例如:

SELECT
    *
FROM
    dbo.NewsStory
WHERE
    showOnSite = 1

修改

哦!我知道了。您正在谈论复制和粘贴查询。晚了。 >。<

如果您有存储过程,则可以传递一个值以指示给定用户是否为管理员:

SELECT
    *
FROM
    dbo.NewsStory
WHERE
    showOnSite = 1
    OR @isAdmin = 1

答案 1 :(得分:2)

取决于你编写代码的位置 - 如果你使用存储过程,那么像@liveonly这样的参数就足够了。 Sameway如果你在C#方法中直接使用内联sql查询,那么参数live_only应该足够好,以确定是否添加条件的额外条件。

例如。在SP

SELECT * 
FROM news
WHERE ((@live_only=true AND showonsite=true) or (@live_only=false))

这样,对于管理面板,可以使用@live_only = false调用它,但实际站点的值为true。

答案 2 :(得分:1)

不,我不会使用视图,我不会复制任何代码。听起来这只是对查询的条件过滤器。

您没有明确表示您是如何进行数据访问的,但这可能意味着aasdij增加了一行TSQL,添加了一个so参数,添加了额外的LINQ .Where子句等等