ASP.NET/VB.NET/SQL Server 2012-页面继续加载
我正在尝试运行这段代码,每当我按下“注册”按钮时,没有任何事情发生,页面就像加载一样,但保持在同一页面上 代码: 按钮事件处理程序:ASP.NET/VB.NET/SQL Server 2012-页面继续加载,asp.net,sql-server,vb.net,Asp.net,Sql Server,Vb.net,我正在尝试运行这段代码,每当我按下“注册”按钮时,没有任何事情发生,页面就像加载一样,但保持在同一页面上 代码: 按钮事件处理程序: Protected Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click register() End Sub 代码有问题吗 在使用SqlDataReader时,关联的SqlConnection是 忙于为SqlDataReader提供服务,
Protected Sub btnRegister_Click(sender As Object, e As EventArgs) Handles btnRegister.Click
register()
End Sub
代码有问题吗
在使用SqlDataReader时,关联的SqlConnection是
忙于为SqlDataReader提供服务,无法执行其他操作
在SqlConnection上执行,而不是关闭它。情况就是这样
直到调用SqlDataReader的Close方法。例如
在调用Close之后才能检索输出参数
在尝试执行insert命令时,似乎打开了SqlDataReader。
在使用insert命令之前,我将尝试关闭它
If dr.HasRows = False Then
dr.Close()
' The following lines are probably a remainder of a copy/paste operation'
' They are not needed and you should remove them'
'validateSQL = New SqlCommand(sqlValidate, conn)'
'validateSQL.CommandText = sqlValidate'
'Dim reader As SqlDataReader = validateSQL.ExecuteReader()'
'reader.Read()'
' Now execute the insert command
此外,除了performance参数外,检查用户是否存在的命令也是错误的,因为它引入了Sql注入的可能性
请尝试这些更改
sqlValidate = "SELECT * FROM users where username=@uname"
validateSQL = New SqlCommand(sqlValidate, conn)
validateSQL.Parameters.AddWithValue("@uname", txtUserName.Text)
Dim dr As SqlDataReader = validateSQL.ExecuteReader()
Dim userFound = dr.HasRows
dr.Close()
if userFound = False then
......
哪种代码调用此sub?这不是事件处理程序,您还没有显示处理单击事件的代码。@Steve我更新了问题。谢谢因此,我删除了额外打开的连接,现在我在validateSQL=New-SqlCommandsqlValidate,conn Dim dr中遇到另一个错误,即SqlDataReader=validateSQL.ExecuteReader conn。关闭错误为:无效列名“cdarwin”。其中cdarwin是在username textboxNo conn.Close中输入的用户名。这会关闭连接,您需要关闭dr.Close的是DataReader…列名无效,因为您不使用参数,并且在原始命令中忘记了单个引号OK谢谢!你知道为什么它会给我这个错误是因为:sqlValidate=SELECT*来自username=+txtUsername.Text.toString的用户错误是无效的列名“cdarwin”。其中cdarwin是在用户名文本框中输入的用户名
sqlValidate = "SELECT * FROM users where username=@uname"
validateSQL = New SqlCommand(sqlValidate, conn)
validateSQL.Parameters.AddWithValue("@uname", txtUserName.Text)
Dim dr As SqlDataReader = validateSQL.ExecuteReader()
Dim userFound = dr.HasRows
dr.Close()
if userFound = False then
......