下面是我的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);
}
我以为我在数据库上犯了一个错误,但是在重新创建了几次数据库之后,我不知道我做错了什么。
1条答案
按热度按时间ohfgkhjo1#
是否可以使用"While reader ..."和计数器来代替"if reader ..."?如果计数器= 0,则可以提供msg。
或者...
下面的示例链接可能会有所帮助:[链接] https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/configuring-parameters-and-parameter-data-types