Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法在vb.net中使用sql显示当前用户详细信息_Asp.net_Sql_Sql Server_Vb.net - Fatal编程技术网

Asp.net 无法在vb.net中使用sql显示当前用户详细信息

Asp.net 无法在vb.net中使用sql显示当前用户详细信息,asp.net,sql,sql-server,vb.net,Asp.net,Sql,Sql Server,Vb.net,我使用了一个sql语句来显示当前登录用户的详细信息。但是当我运行这个命令时 ConnectionString = "<%$ ConnectionStrings:Details %>" SelectCommand = "SELECT * FROM member WHERE username = 'User.Identity.Name'" 数据库中存在用户名david,并且在web表单中仅显示david的详细信息。我甚至做了响应。在User.Identity.Name上写入,该语

我使用了一个sql语句来显示当前登录用户的详细信息。但是当我运行这个命令时

ConnectionString = "<%$ ConnectionStrings:Details %>" 

SelectCommand = "SELECT *  FROM member WHERE username = 'User.Identity.Name'"

数据库中存在用户名david,并且在web表单中仅显示david的详细信息。我甚至做了
响应。在
User.Identity.Name
上写入
,该语句将显示登录页面的当前用户。

问题是您将实际的
User.Identity.Name
作为字符串传递,而不是其值

SelectCommand = String.Format("SELECT *  FROM member WHERE username = '{0}'", User.Identity.Name)
但更好(更安全)的做法是

SelectCommand = "SELECT *  FROM member WHERE username = @UserName"
SelectCommand.Parameters.AddWithValue("@UserName", User.Identity.Name)
这将阻止SQL注入

编辑: 由于您是在页面中定义此项,因此可以使用以下模板:

<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:Details %>" SelectCommand="SELECT * FROM members WHERE ([username] = @UserName)">
    <SelectParameters>
        <asp:Parameter Name="UserName" Type="String" DefaultValue="" />
    </SelectParameters>
</asp:SqlDataSource>

更简单的方法是使用
配置数据源
向导,在设计视图中单击SqlDataSource对象旁边的右箭头即可使用该向导。

当我在visual studio System.Web.Security.FormsIdentity |{System.Web.Security.FormsIdentity}name=“David”中运行调试器时,它会显示名称“David”authenticationtype=“forms”isAuthenticated=“true”带有SelectCommand.Parameters.AddWithValue的语句给出了错误,并指出此属性后面必须跟一个等号和一个值。如果值在引号中,则引号必须与第一条语句匹配。不显示任何错误。我还有错误3。不允许使用类似“”的文字表达式。改为使用.191这是错误上面不是错误好的,所以你在你的页面中定义它。请看我的最新答案。
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:Details %>" SelectCommand="SELECT * FROM members WHERE ([username] = @UserName)">
    <SelectParameters>
        <asp:Parameter Name="UserName" Type="String" DefaultValue="" />
    </SelectParameters>
</asp:SqlDataSource>
SqlDataSource1.SelectParameters.Item(0).DefaultValue = User.Identity.Name