C#SQL SELECT * FROM Table1 WHERE(表1中的子句)AND(表2中的子句)

时间:2016-05-16 09:20:04

标签: c# sql asp.net

我有两个表 SupplierTable 日历,两个表都有一个名为 SupplierName 的列。我在名为 SuppplierDetails.aspx 的页面上有一个asp日历功能。

此页面上的所有详细信息都从数据库连接调用 SupplierTable 并显示在标签中。我需要我的日历功能来突出显示 CalendarTable 中的日期,其中 SupplierName 等于当前页面上的 SupplierName 名称(等于当前标签)。

我的查询:

"SELECT Date FROM Calendar WHERE SupplierName= "+ 
Request.QueryString["SupplierName"] + "AND Date = @firstDate AND Date < @lastDate";

firstDate是当月的第一个日期,lastDate是当月的最后一个日期。 然后我使用DayRender方法将页面变为红色。

目前这给了我一个错误,我知道问题出在查询的WHERE部分,但找不到写代码来纠正它。如果我从WHERE子句中删除SupplilerName它可以工作 - 它只显示所有日历中的所有日期。我需要它只显示当前供应商的日期。 任何建议赞赏

4 个答案:

答案 0 :(得分:1)

Using parameters应该解决这个问题。只需提出您的疑问:

"SELECT Date FROM Calendar WHERE SupplierName= @SupplierName AND Date = @firstDate AND Date < @lastDate";

您可以使用以下方式添加供应商名称参数:

oCMD.Parameters.Add("@SupplierName", SqlDbType.VarChar, 50).Value = Request.QueryString["SupplierName"];

use SELECT * in production code

也不是一个好主意

答案 1 :(得分:-1)

"SELECT Date FROM Calendar WHERE SupplierName= GeorgeAND Date = xx/xx/xx AND Date < yy/yy/yyy";

如果您的供应商名称是&#34; George&#34;,您将最终得到此查询:

layoutIfNeeded()

如您所见,您只需在AND之前有一个空格,否则它将被解释为一个单词。

答案 2 :(得分:-1)

我认为这可以解决您的问题

"SELECT Date FROM Calendar WHERE SupplierName= '"+ 
    Request.QueryString["SupplierName"] + "' AND Date = @firstDate AND Date < @lastDate";

您应该使用debug mode查看您的查询,以查看缺少单引号'

答案 3 :(得分:-2)

首先您需要使用连接操作加入两个表:

正确的查询是:SELECT Date FROM Calendar,SupplierTable WHERE SupplierName =“+ Request.QueryString [”SupplierName“] +”AND Date = @firstDate AND Date&lt; @lastDate