将变量与SQL / Troubleshooting会话进行比较

时间:2014-10-13 22:54:23

标签: asp.net vb.net

我正在尝试使用会话将一些变量发送到下一页“ProcedureSelectionForm.aspx”。如您所见,会话已被注释掉。下面的代码将起作用(当然不发送变量)。但是,当您删除注释时,.onclick函数会重新加载页面,而不是导航到“ProcedureSelectionForm.aspx”。出于这个原因,我相信这就是我的问题所在。前两列是数据库中的“帐户”和“密码”。我没有拼错任何东西。我是VB和ASP.net的新手,我很欣赏一些关于发生了什么以及为什么我想要的功能没有实现的解释。谢谢你的帮助!

If IsValid Then
                Try
                    Dim strSQL = "select * from CreatePatient where Account = @Account and Password = @Password"
                        Using CCSQL = New SqlConnection(ConfigurationManager.ConnectionStrings("CreatePatientConnectionString").ConnectionString)
                            Using CCUser = New SqlCommand(strSQL, CCSQL)
                                CCSQL.Open()
                                CCUser.Parameters.Add("@Account", Data.SqlDbType.VarChar).Value = PatientAccount.Text
                                CCUser.Parameters.Add("@Password", Data.SqlDbType.VarChar).Value = PatientPass.Text
                                CCUser.ExecuteNonQuery()

                            'Using reader As SqlDataReader = CCUser.ExecuteReader()
                            'If reader.HasRows Then
                            'reader.Read()
                            'Session("user") = reader("Account")
                            'Session("pass") = reader("Password")
                            Response.Redirect("ProcedureSelectionForm.aspx")
                            'End If
                            'End Using
                        End Using
                    End Using
                Catch ex As Exception
                    Label1.Text = ex.Message
                End Try
            End If

2 个答案:

答案 0 :(得分:1)

我的朋友能够抽出时间帮助我。除了关闭连接之外,我不确定他做了什么不同的事情

If IsValid Then
            Dim CCSQL As New SqlConnection
            Dim CCUser As New SqlCommand
            Dim strSQL As String
            Dim dtrUser As SqlDataReader
            Try
                CCSQL.ConnectionString = ConfigurationManager.ConnectionStrings("CreatePatientConnectionString").ConnectionString
                strSQL = "Select * from CreatePatient where Account=@user and Password=@pwd"
                CCUser.CommandType = Data.CommandType.Text
                CCUser.CommandText = strSQL
                CCUser.Parameters.Add("@user", Data.SqlDbType.VarChar).Value = PatientAccount.Text
                CCUser.Parameters.Add("@pwd", Data.SqlDbType.VarChar).Value = PatientPass.Text

                CCSQL.Open()
                CCUser.Connection = CCSQL
                dtrUser = CCUser.ExecuteReader()
                If dtrUser.HasRows Then
                    dtrUser.Read()
                    Session("user") = dtrUser("Account")
                    Session("level") = dtrUser("Password")


                    Response.Redirect("ProcedureSelectionForm.aspx")

                Else
                    Label1.Text = "Please check your user name and password"

                End If
                dtrUser.Close()
                CCSQL.Close()
            Catch ex As Exception
                Label1.Text = ex.Message
            End Try
        End If

我的截止日期很紧,但我会回复那些对答案感兴趣的人。谢谢你的努力。

答案 1 :(得分:-1)

当您实际进行查询时(即SQL" .ExecuteNonQuery()"语句,您不想做SELECT。您可以执行{.ExecuteReader() 1}}读取这两个值。 另外,我认为您正在尝试验证帐户和密码;否则您只需设置Session("user") = PatientAccount.Text并设置Session("pass") = PatientPass.Text