Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要ASP.NET初学者登录应用程序的帮助吗_C#_Asp.net_Sql Server - Fatal编程技术网

C# 需要ASP.NET初学者登录应用程序的帮助吗

C# 需要ASP.NET初学者登录应用程序的帮助吗,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我创建了这个简单的登录页面。它应该显示在标签文本中,比如用户不存在时错误的用户,输入的密码不正确时错误的密码,等等 但是,每当我尝试登录时,当用户确实存在于表中时,它总是显示错误的用户。我已手动输入用户名和密码,在此应用程序中未使用任何存储过程 这是代码;请告诉我我做错了什么。显然这是逻辑上的错误 Default.cs文件: using System; using System.Configuration; using System.Data; using System.Data.SqlClie

我创建了这个简单的登录页面。它应该显示在标签文本中,比如用户不存在时错误的用户,输入的密码不正确时错误的密码,等等

但是,每当我尝试登录时,当用户确实存在于表中时,它总是显示错误的用户。我已手动输入用户名和密码,在此应用程序中未使用任何存储过程

这是代码;请告诉我我做错了什么。显然这是逻辑上的错误

Default.cs文件:

using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class _Default : System.Web.UI.Page
{
    SqlConnection con = new SqlConnection();

    protected void Page_Load(object sender, EventArgs e)
    {
        con.ConnectionString = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
        if (con.State == ConnectionState.Closed)
        {
            con.Open();
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        Int32 d = checkUser(UserName.Text, Password.Text);
        if (d == -1)
        {
            Label1.Text = "Wrong user";

        }
        if (d == -2)
        {
            Label1.Text = "Wrong password";
        }

        if (d == 2)

        {
            Label1.Text = "Login Successful";

        }
    }


    private Int32 checkUser(String u, String p)
    {
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "LogInCheck";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = con;
        cmd.Parameters.Add("@u", SqlDbType.VarChar, 50).Value = u;
        cmd.Parameters.Add("@p", SqlDbType.VarChar, 50).Value = p;
        SqlParameter p1 = new SqlParameter("@ret", SqlDbType.Int);
        p1.Direction = ParameterDirection.ReturnValue;
        cmd.Parameters.Add(p1);
        cmd.ExecuteNonQuery();
        Int32 k = Convert.ToInt32(cmd.Parameters["@ret"].Value);
        return k;
    }
}
.aspx文件:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                Username :&nbsp;
                <asp:TextBox ID="UserName" runat="server"></asp:TextBox>
                <br />

                Password :
                <asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox>
                &nbsp;

                <asp:Button ID="Button1" runat="server" Text="Login" onclick="Button1_Click"/>
                <br />

                <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            </div>
        </form>
    </body>
</html>

您的select查询没有将任何值放入@ap。试试这个:

Select @ap=<col_name> from tbuser where uname=@u

我表中的列名是uname和upass..我尝试了你说的..将其更改为从tbuser中选择@ap=upass,其中uname=@u..它仍然不起作用…只显示错误的密码..每次确定它都会检查用户名,但不会检查密码..即使我输入了正确的密码..它也会显示错误的密码尝试以下操作:如果LTRIMRTRIM@ap=LTRIMRTRIM@p在我的表格中..一个用户名是admin,密码是'ad'…当我键入此信息并按enter键时..什么都没有发生..即标签中的文本没有更改..它只播放标签..将其更改为如果LTRIMRTRIM@ap=LTRIMRTRIM@p…它可以检查用户和密码,但当两者同时存在时,不会显示登录成功字段输入正确
Select @ap=<col_name> from tbuser where uname=@u
Declare @ap varchar(50)
Select @ap from tbuser where uname=@u
if @ap is null
begin
return -1
end
else 
begin         --Here
if @ap=@p
return 1
else 
return -2
end          --And here