【问题标题】:Using variable from Code-behind in SQL Query, asp.net C#在 SQL 查询中使用来自代码隐藏的变量,asp.net C#
【发布时间】:2010-04-26 13:16:01
【问题描述】:

我正在尝试在 sqlDataSource WHERE 语句中使用代码隐藏页面中的变量。我正在使用 Membership.GetUser().ProviderUserKey 来获取登录用户的 UserId,我只想显示具有此 UserId 作为外键的记录。我该如何为此编写 SQL?

非常感谢,卡尔

这是我目前所拥有的:

SQL 查询:

SelectCommand="SELECT [UserID], [CarID], [Make], [Model], [Year] FROM [Vehicle]"

代码隐藏

String user2 = ((Guid)Membership.GetUser().ProviderUserKey).ToString();

我想将 WHERE UserID = user2 添加到 SQL 查询中。

【问题讨论】:

  • 向我们展示您目前拥有的代码。是您遇到问题的 SQL 还是如何在代码中构建它?

标签: c# asp.net sql


【解决方案1】:

在 ASP.NET 中有许多与数据库交互的方法。您尚未说明您是如何执行 SQL 的,但这是一种可能的方法:

在您的 .ASPX 文件中:

<asp:SqlDataSource ID="UserSource" runat="server" ConnectionString="<%$ ConnectionStrings:SQLConn %>"
  SelectCommandType="StoredProcedure" SelectCommand="dbo.NPGetUserInfo">
  <SelectParameters>
    <asp:Parameter Name="UserID" DefaultValue="0" />
  </SelectParameters>
</asp:SqlDataSource>

在您的 .VB 代码隐藏文件中(概念与 C# 相同):

Protected Sub UserSource_Selecting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs) Handles UserSource.Selecting
    e.Command.Parameters.Item("@UserID").Value = Membership.GetUser().ProviderUserKey
End Sub

祝你好运!

【讨论】:

  • 我在 gridview 中执行 SQL(我想这就是您要问的)我不确定在 C# 中用什么替换“Item”?
【解决方案2】:

我明白了,谢谢。

我创建了一个会话变量,在其中存储了 ((Guid)Membership.GetUser().ProviderUserKey),然后使用配置数据源向导中的 WHERE 按钮将其与 UserID 进行比较。

非常感谢您的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多