使用VB函数作为SqlDataSource SelectParameter值

时间:2015-06-11 14:59:54

标签: sql asp.net vb.net sqldatasource

在我的代码后面我有一个函数getEmail()返回一个电子邮件地址,在前端我有一个sql数据源select命令,根据电子邮件地址获取信息。截至目前,电子邮件地址是硬编码我想知道如何将getEmail()放入selectcommand。

VB

    Public Function getEmail() As String
     Dim x As PublicProfile
     x= UserProfileContext.Current.UserInfo
    Return x.LoginName.ToString()
   End Function

前端

   <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" SelectCommand="select Count(ID)nums from revs where Email='jon@usa.com' and Source='PUB' and Status='a'"></asp:SqlDataSource>

我尝试将&lt;%= getEmail()%&gt;而不是电子邮件,但没有运气

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServices %>" SelectCommand="select Count(ID)nums from revs where Email='<% =getEmail() %>' and Source='PUB' and Status='a'"></asp:SqlDataSource>

1 个答案:

答案 0 :(得分:1)

要参数化查询,请按如下所示修改SqlDataSource标记,以添加“@Email”SelectParameter:

 <asp:SqlDataSource> 
      ID="SqlDataSource1" 
   runat="server" 
   ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
   SelectCommand="select Count(ID)nums from revs where Email=@EMail and  
                  Source='PUB' and Status='a'">
</asp:SqlDataSource>

在你的codebehind / Page_Load()中,尝试添加以下内容(在绑定之前)将值放入标记中定义的SelectParameter中,该值又由函数提供:

SqlDataSource1.SelectParameters("Email").DefaultValue = getEmail()