ASP.net 代码 return 打开会话错误

ASP.net code return open session errors

这看起来是一个简单的问题,但需要一些帮助。当我尝试 运行 以下代码时,我只收到以下错误。我确实确保连接已打开,并确保遵循正确的 mySQL 连接编码结构。我只是在这一点上迷路了。

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

    <html>

      <head>
        <title>Get Data from a Database using ADO</title>
        <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 dbCMD As MySqlCommand
                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()

                dbCMD = New MySqlCommand(strSQL, dbconn)
                mySqlCommand = New MySqlCommand(strSQL)
                mySqlCommand.Parameters.AddWithValue("@username", username)
                counter = mySqlCommand.ExecuteScalar()
                If isInGroup = counter > 0 Then
                    Response.Redirect("http://www.w3schools.com")
                Else
                    Response.Redirect("http://www.google.ca")
                End If


                dbconn.Close()
            End Sub
        </Script>  

      </head>

      <body>
    Main page ...
      </body>

    </html>

错误:

Exception Details: System.InvalidOperationException: Connection must be valid and open.


Line 23:             mySqlCommand = New MySqlCommand(strSQL)
Line 24:             mySqlCommand.Parameters.AddWithValue("@username", username)
Line 25:             counter = mySqlCommand.ExecuteScalar()
Line 26:             If isInGroup = counter > 0 Then
Line 27:                 Response.Redirect("http://www.w3schools.com")

您正在初始化此命令 (有联系)

            dbCMD = New MySqlCommand(strSQL, dbconn)

但是执行这个命令 (无连接)

            mySqlCommand = New MySqlCommand(strSQL)

这就是错误产生的原因。更改执行命令。

我的建议是使用 DAL 联系未在 UI 层中使用的数据库。

你没有给你的 "mySqlCommand" 变量一个连接。您应该将第 23 行更改为:

mySqlCommand = New MySqlCommand(strSQL, dbConn)

此外,您的变量 "dbCMD" 未被使用。

你也可以这样做:

set mySqlCommand = dbConn.CreateCommand()

如果您养成了这样做的习惯,就不必担心为您的命令对象分配连接。