Vb.net 类型为';系统无效操作异常';发生在System.Data.dll中

Vb.net 类型为';系统无效操作异常';发生在System.Data.dll中,vb.net,Vb.net,这是我的密码。帮我解决这个问题谢谢 System.Data.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理其他信息:ExecuteReader需要打开且可用的连接。连接的当前状态为关闭 正如我在评论中所说,在读取数据之前,您正在关闭连接。使用完数据读取器后,应将连接移近 Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit

这是我的密码。帮我解决这个问题谢谢

System.Data.dll中发生“System.InvalidOperationException”类型的异常,但未在用户代码中处理其他信息:ExecuteReader需要打开且可用的连接。连接的当前状态为关闭


正如我在评论中所说,在读取数据之前,您正在关闭连接。使用完数据读取器后,应将连接移近

Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    Dim con As New Data.SqlClient.SqlConnection
    con.ConnectionString = ("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\user\Desktop\oh manisku\PROJECT ABIS\project baru\project baru\App_Data\order.mdf;Integrated Security=True;Connect Timeout=30")
    con.Open()
    cmd.CommandText = ("Select Username, Password from Admin WHERE Username ='" & txtusername.Text & "'   and Password = '" & txtPass.Text) & "' "
    cmd.Connection = con
    dr = cmd.ExecuteReader
    If dr.HasRows Then

        MsgBox("Succesfully Login")
        Response.Redirect("recalled.aspx")

    Else
        MsgBox("Invalid Username and Password")

    End If
    dr.Close() ' close the datareader
    con.Close() ' close the connection
End Sub
Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click


End Sub
调用
ExecuteReader
只会打开流。如果关闭连接,则关闭流。用一个电话类比:这就像挂断某人的电话,然后试图进行对话

也请切换到使用,因为我可以输入我的用户名作为
”或1=1--我就可以完全访问您系统中的第一个帐户


此外,请研究安全存储密码的方法。您不应在数据库中以纯文本形式存储密码,也不应以允许将密码反转为原始用户输入的方式存储密码。密码应该用盐散列。请参阅。

我已为您修复了标签。这是VB.NET,不是C#。我猜,这是因为您正在调用
con.Close()
,然后调用
dr.HasRows
SqlDataReader
streams数据,它不会一次加载所有数据
ExecuteReader
只需打开流即可
con.Close()
然后在使用它之前关闭它。你能编辑回我的代码吗?我不明白,我已经把你的连接打开代码移到了同一个方法中,因为我意识到这些可能会因为你在一个单独的方法中而引起问题。
Protected Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    Dim con As New Data.SqlClient.SqlConnection
    con.ConnectionString = ("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\user\Desktop\oh manisku\PROJECT ABIS\project baru\project baru\App_Data\order.mdf;Integrated Security=True;Connect Timeout=30")
    con.Open()
    cmd.CommandText = ("Select Username, Password from Admin WHERE Username ='" & txtusername.Text & "'   and Password = '" & txtPass.Text) & "' "
    cmd.Connection = con
    dr = cmd.ExecuteReader
    If dr.HasRows Then

        MsgBox("Succesfully Login")
        Response.Redirect("recalled.aspx")

    Else
        MsgBox("Invalid Username and Password")

    End If
    dr.Close() ' close the datareader
    con.Close() ' close the connection
End Sub
Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click


End Sub