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()
如果您养成了这样做的习惯,就不必担心为您的命令对象分配连接。
这看起来是一个简单的问题,但需要一些帮助。当我尝试 运行 以下代码时,我只收到以下错误。我确实确保连接已打开,并确保遵循正确的 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()
如果您养成了这样做的习惯,就不必担心为您的命令对象分配连接。