ASP.NET SQL 查询未返回预期结果

Posted

技术标签:

【中文标题】ASP.NET SQL 查询未返回预期结果【英文标题】:ASP.NET SQL query not returning expected results 【发布时间】:2015-05-02 13:51:01 【问题描述】:

我的以下代码出现问题。我在下面创建的基本内容是,当用户登录到我的网站时,他们将点击这个 aspx 页面,这将检查您是否是 group_id 1001 的一部分。从数据库的角度来看,我确保我的测试登录用户名在我的数据库中,group_ID 1001 但返回错误,认为我没有group_id。我想这可能是我的 SQL 查询尝试了 @username'" & username & "' 但仍然返回 false。没有看到任何其他问题,但希望看看是否有人发现我的错误在哪里。我的钱在某处的 SQL 查询上,但我没有做任何事情来解决这个问题。

<%@ import namespace="System.Data" %> 
<%@ import namespace="mysql.data.MySqlclient" %> 
<%@ import namespace="MySql.data.MySqlclient.MySqlConnection" %> 

    <Script runat="server"> 
        Sub page_load()
            Dim username As String = Convert.ToString(User.Identity.Name.Substring(User.Identity.Name.IndexOf("\") + 1))
            Dim dbconn As MySqlConnection
            Dim mySqlCommand As MySqlCommand
            Dim counter As Integer
            Dim isInGroup As Boolean
            Dim strSQL As String = "SELECT COUNT(*) FROM tbl_staff WHERE username = @username AND group_id = 1001;"

            dbconn = New MySqlConnection("server=localhost;database=imc_directory_tool;user=Directory_Admin;port=3306;password=IMCisgreat2014;")
            dbconn.Open()

            mySqlCommand = New MySqlCommand(strSQL, dbconn)
            mySqlCommand.Parameters.AddWithValue("@username", username)
            counter = mySqlCommand.ExecuteScalar()
            If isInGroup = counter > 0 Then
                Response.Write("You are part of group_id 1001")
            Else
                Response.Write("You are not part of group_id 1001")
            End If
            dbconn.Close()
        End Sub
    </Script>  

【问题讨论】:

构造后取strSQL,直接在DB上运行试试。 【参考方案1】:

布尔值的默认值为 false。所以在你的声明之后:

Dim isInGroup As Boolean

isInGroup = 假

这意味着你的代码

If isInGroup = counter > 0 Then
    Response.Write("You are part of group_id 1001")
Else
    Response.Write("You are not part of group_id 1001")
End If

其实是:

If False = (counter > 0) Then
    Response.Write("You are part of group_id 1001")
Else
    Response.Write("You are not part of group_id 1001")
End If

当你的用户名和组组合在数据库中找到时

(counter > 0) = True

我不知道您为什么要使用 isInGroup 布尔值,但如果您需要将它用于其他代码,那么我建议您先设置布尔值,然后在需要的地方进行测试。

isInGroup = counter > 0

If isInGroup = True Then
    Response.Write("You are part of group_id 1001")
Else
    Response.Write("You are not part of group_id 1001")
End If

【讨论】:

you da man 5uperdan 成功了,非常感谢。我还在学习很多东西,试图让它发挥作用。 @DanielEllison 谢谢!在 .Net 框架中已经为您完成了很多关于成员资格和组的工作,如果您还没有,这些工作可能值得一试。任何对 asp.net 会员资格的搜索都会得到大量结果,并且 asp.net 官方网站有一个专门的部分:asp.net/identity

以上是关于ASP.NET SQL 查询未返回预期结果的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Razor 语法显示 SQL SelectQuery 值

ASP.NET + SqlDataAdapter 没有返回正确的查询结果

如何在 C# Asp.net 中将 SELECT sql 查询结果保存在数组中

Asp.Net 在运行存储过程时出现超时错误

大型查询如何在 C#/ASP.NET MVC 4 部分中返回结果

ASP.NET C# SQL 提交错误