无论如何我们可以获得Sql的标签值

时间:2010-03-24 16:56:40

标签: c# sql-server dataview

SELECT COUNT(*) AS Expr1 
FROM Book 
INNER JOIN Temp_Order ON Book.Book_ID = Temp_Order.Book_ID 
WHERE (Temp_Order.User_ID = 25) 
AND (CONVERT (nvarchar, Temp_Order.OrderDate, 111) = CONVERT (nvarchar, GETDATE(), 111))

在这里,我想更改我的User_ID以从label.Text

获取

此Sql语句位于DataView中。所以在向导中它不接受文本框值或任何东西。

有人可以帮我解决这个问题吗

1 个答案:

答案 0 :(得分:0)

绝不使用CONVERT比较日期列。要仅比较日期时间的日期,请使用BETWEEN。更好的是,使用DATE类型代替DATETIME。

要过滤DataView,请过滤基于的查询。使用参数化查询:

SELECT COUNT(*) AS Expr1 
FROM Book 
INNER JOIN Temp_Order ON Book.Book_ID = Temp_Order.Book_ID 
WHERE (Temp_Order.User_ID = @User_ID) 
AND Temp_Order.OrderDate BETWEEN @fromDate AND @toDate;

将@User_ID作为参数传递给查询:command.Parameters.AddWithValue("@User_ID", Convert.ToInt32(label.Text));

您还可以使用LINQ获取类似的结果并将结果转换为DataView,请参阅Filtering with DataView

  

除了基于字符串   过滤功能DataView也   提供使用LINQ的能力   过滤的表达式   标准。 LINQ表达式允许   更加复杂和强大   过滤操作比   基于字符串的过滤。

无论您做什么,都不要使用DataView.RowFilter属性。