asp.net 我有一个登录表单,我的工作,我卡住了,代码应该登录,然后打开一个新的页面,但它是行不通的

cld4siwp  于 2023-01-03  发布在  .NET
关注(0)|答案(1)|浏览(136)

下面是我的SQL Server存储过程,我创建了三个新参数来传入登录用户id、username和password

ALTER PROCEDURE [dbo].[Select_Logins]
    @Name_ID varchar(50),
    @UserName varchar(50),
    @Password varchar(50)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT * 
    FROM Logins_2
    WHERE Name_ID = @Name_ID 
      AND UserName = @UserName 
      AND Password = @Password
END

这是后面的代码。如图所示,它进入数据库以获取登录数据,然后读取该数据以验证用户输入的登录的身份。如果它们匹配,它将打开索引页,如果不匹配,它将显示错误消息。我的程序跳过第一个if语句,直接转到else语句。

try 
{
    SqlCommand command;
    SqlConnection connection;

    connection = new SqlConnection(constStringConnection);
    connection.Open();

    command = new SqlCommand("Select_Logins", connection);
    command.CommandType = CommandType.StoredProcedure;

    command.Parameters.Add("@Name_ID", UserIDtxt.Text);
    command.Parameters.Add("@UserName", UserNametxt.Text);
    command.Parameters.Add("@Password", Passwordtxt.Text);
                
    reader = command.ExecuteReader();

    if (reader.Read())
    {
        Response.Redirect("Index.aspx");
    }
    else
    {
        lblMessage.Text = ("Username or password is invalid");
    }

    connection.Close();
}
catch (Exception ex)
{
    lblMessage.Text = ("" + ex);
}

我以为我在数据库上犯了一个错误,但是在重新创建了几次数据库之后,我不知道我做错了什么。

ohfgkhjo

ohfgkhjo1#

是否可以使用"While reader ..."和计数器来代替"if reader ..."?如果计数器= 0,则可以提供msg。
或者...
下面的示例链接可能会有所帮助:[链接] https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/configuring-parameters-and-parameter-data-types

相关问题