C# 如何从数据库中提取信息?

C# 如何从数据库中提取信息?,c#,asp.net,webforms,C#,Asp.net,Webforms,我正在尝试创建一个登录页面,并根据数据库验证传入的详细信息。但是我的代码无法交叉检查数据库中的数据。下面是我从应用程序获得的输出结果: 下面是我正在编写的代码 Default.aspx代码: <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master"AutoEventWireup="true" CodeFile="LogIn.aspx.cs" Inherits="LogIn" %> <asp:Co

我正在尝试创建一个登录页面,并根据数据库验证传入的详细信息。但是我的代码无法交叉检查数据库中的数据。下面是我从应用程序获得的输出结果:

下面是我正在编写的代码

Default.aspx代码

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master"AutoEventWireup="true" CodeFile="LogIn.aspx.cs" Inherits="LogIn" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
<!-- Login & Register -->
    <section>
    <div class="pageintro">
        <div class="pageintro-bg">
            <img src="images/bg-page_01.jpg" alt="About Us"/>
        </div>
        <div class="pageintro-body">
            <h1 class="pageintro-title">Login</h1>
            <nav class="pageintro-breadcumb">
                <ul>
                    <li>
                        <a href="#">Home</a>
                    </li>
                    <li>
                        <a href="#">Login</a>
                    </li>
                </ul>
            </nav>
        </div>
    </div>
</section>

            <!-- Login -->
            <div class="col-lg-6 ">
                <div class="au-form-body p-r-lg-15 p-r-xl-15">
                    <h2 class="au-form-title form-title-border">Login</h2>
                    <fieldset class="m-t-40">

                            <div class="form-group au-form require">
                                <label>Email address</label>
                                 <asp:TextBox ID="txtemail" runat="server"></asp:TextBox>
                            </div>
                            <div class="form-group au-form require">
                                <label>Password</label>
                                 <asp:TextBox ID="txtpwd" runat="server" TextMode="Password"></asp:TextBox>
                            </div>
                            <div class="form-group au-form">
                                <asp:Button ID="loginbtn" runat="server" Text="Log In" OnClick="Button1_Click" />
                                <asp:Label ID="loginmessage" runat="server"></asp:Label>
                                <asp:Button ID="logoutbtn" runat="server" OnClick="Button2_Click" Text="Log Out" Visible="False" />
                                <div class="form-forgot w-100 m-t-10">
                                    <a href="forgetpassword.aspx">Lost your password?</a>
                                </div>
                            </div>

                    </fieldset>
                </div>
            </div>
            <!-- End Login -->

有人能指出代码出了什么问题吗?

不需要从数据库中获取所有记录来检查单个结果。将
按钮1\u单击事件代码更改为:

    protected void Button1_Click(object sender, EventArgs e)
    {
        string username = txtemail.Text;
        string password = txtpwd.Text;
        using (SqlConnection sqlCon = new SqlConnection(@"Data Source=TEAFAMILY;Initial Catalog=Bolsen;Integrated Security=True; MultipleActiveResultSets=true;"))
        {
            string query = "SELECT Top(1) * FROM Customers WHERE cEmail = @Username and cPassword = @Password";
            SqlCommand cmd = new SqlCommand(query, sqlCon);
            cmd.Parameters.AddWithValue("@Username", username);
            cmd.Parameters.AddWithValue("@Password", password);
            sqlCon.Open();

            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.Read())
            {
                Session["sFlag"] = "T"; // sFlag = "T" means user has logged in
                Session["sName"] = rdr["Firstname"];
                Session["sEmail"] = rdr["cEmail"];
                Session["sAddress"] = rdr["cCompanyAddress"];
                Session["sEmail"] = rdr["cEmail"];
                logoutbtn.Visible = true;
                sqlCon.Close();
                Response.Redirect("Default.aspx");
            }
            else
            {
                Session["sFlag"] = "F";
                Session["sName"] = "";
                Session["sUserId"] = "";
                loginmessage.Text = "Error in login - Please login again   ";
            }
        }
    }

嘿,我收到一个错误,说rdr在当前上下文中不存在。这里有什么我应该添加的吗?使用
SqlDataReader
@SahilSharma更新了答案以仅获取单个记录:编辑问题时请不要添加聊天材料-我们删除了它,而不是将其添加回。没有必要再加上感谢多少帮助,特别是如果问题作者不是自己写的话。这是可以假设的。我经常发布这样的建议:注意,我们更喜欢技术性的写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,闲聊的材料和缩写的txtspk,恳求,你被困多久了,投票建议,元评论等。只需解释你的问题,并展示你已经尝试了什么,你期望什么,事实上发生了什么。添加这样的上下文是有原因的;当90%的问题包含代码时,编辑器不允许我在不添加上下文的情况下编辑并提交它。否则我会同意你的意见。
    protected void Button1_Click(object sender, EventArgs e)
    {
        string username = txtemail.Text;
        string password = txtpwd.Text;
        using (SqlConnection sqlCon = new SqlConnection(@"Data Source=TEAFAMILY;Initial Catalog=Bolsen;Integrated Security=True; MultipleActiveResultSets=true;"))
        {
            string query = "SELECT Top(1) * FROM Customers WHERE cEmail = @Username and cPassword = @Password";
            SqlCommand cmd = new SqlCommand(query, sqlCon);
            cmd.Parameters.AddWithValue("@Username", username);
            cmd.Parameters.AddWithValue("@Password", password);
            sqlCon.Open();

            SqlDataReader rdr = cmd.ExecuteReader();
            if (rdr.Read())
            {
                Session["sFlag"] = "T"; // sFlag = "T" means user has logged in
                Session["sName"] = rdr["Firstname"];
                Session["sEmail"] = rdr["cEmail"];
                Session["sAddress"] = rdr["cCompanyAddress"];
                Session["sEmail"] = rdr["cEmail"];
                logoutbtn.Visible = true;
                sqlCon.Close();
                Response.Redirect("Default.aspx");
            }
            else
            {
                Session["sFlag"] = "F";
                Session["sName"] = "";
                Session["sUserId"] = "";
                loginmessage.Text = "Error in login - Please login again   ";
            }
        }
    }