无论如何,我们是否可以获取 Sql 的标签值

发布于 2024-08-26 09:08:36 字数 360 浏览 5 评论 0原文

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 中。所以在向导中它不接受文本框值或任何内容。

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

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))

In here i want to change my User_ID to get from a label.Text

this Sql Statement is in a DataView. so in the Wizard it not accepting a text box values or anything.

can someone please help me to solve this

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无语# 2024-09-02 09:08:36

切勿使用 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,请参阅使用 DataView 进行过滤

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

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

Never compare date columns by using CONVERT. To compare date only from a date time, use BETWEEN. Better still, use the DATE type for the column instead of DATETIME.

To filter a DataView, filter the query on which is based. Use a parametrized query:

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;

Pass the @User_ID as a parameter to the query: command.Parameters.AddWithValue("@User_ID", Convert.ToInt32(label.Text));

You can also obtain similar results using LINQ and converting the result to a DataView, see Filtering with DataView.

In addition to the string-based
filtering capabilities DataView also
provides the ability to use LINQ
expressions for the filtering
criteria. LINQ expressions allow for
much more complex and powerful
filtering operations than the
string-based filtering.

Whatever you do, don't use the DataView.RowFilter property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文