代码之家  ›  专栏  ›  技术社区  ›  The Muffin Man

在中使用SQL适配器填充数据表时出现问题ASP.NET

  •  0
  • The Muffin Man  · 技术社区  · 15 年前

    我有一个username db表,我正试图连接它来比较username/pass。

    这是我的代码,它不工作,我做错了什么?

    DataTable dt = null;
    
    protected void btn_Click_Login(object sender, EventArgs e)
    {
        string query = string.Format("SELECT * FROM Users WHERE Username='{0}' AND Password='{1}'", txtUsername.Text, txtPassword.Text);
    
        using (SqlConnection c = new SqlConnection(ConfigurationManager.ConnectionStrings["RBConnectionString"].ConnectionString))
        {
            c.Open();
    
            using (SqlDataAdapter a = new SqlDataAdapter(query, c))
            {
                DataTable t = new DataTable();
                a.Fill(t);
            }
        }
        if (dt.Rows.Count > 0)
        {
            Session["Username"] = txtUsername.Text;
            Session["Password"] = txtPassword.Text;
            Response.Redirect("main.aspx");
            lblError.Text = "success";
        }
        else
        {
            lblError.Text = "Wrong Username/Password combination";
        }
    } 
    

    }

    5 回复  |  直到 15 年前
        1
  •  1
  •   TalentTuner    15 年前

    很可能您使用了错误的datatable来检查返回的行数。

        2
  •  1
  •   abatishchev Karl Johan    15 年前

    尝试创建一个SqlCommand来保存查询。

    SqlCommand cmd = new SqlCommand(query, c);
    
    using (SqlDataAdapter a = new SqlDataAdapter(cmd))
    {
        DataTable t = new DataTable();
        a.Fill(t);
    }
    

    我不是百分之百确定那是你的问题,但在我以前使用ADO.NET(在L2SQL/EF之前,的确是黑暗的日子),我似乎还记得DataTable和SqlDataAdapter的一个问题。

    根据我的记忆-不能使用基于原始查询字符串的SqlDataAdapter填充DataTable-需要使用SqlCommand。但我相信这可以通过数据集来实现。

        3
  •  1
  •   RPM1984    15 年前

    你填充 t

    DataTable t = new DataTable();
    a.Fill(t);
    

    但是阅读 dt :

    if (dt.Rows.Count > 0)
    
        4
  •  1
  •   The Muffin Man    15 年前

    我决定试试数据读取器,让它工作起来:

    protected void btn_Click_Login(object sender, EventArgs e)
    {
    
       SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RbConnectionString"].ConnectionString);
        conn.Open();
        string queryString = "SELECT * FROM [Users] WHERE Username=@username AND Password= @password";
       SqlCommand command = new SqlCommand(queryString, conn);
       command.Parameters.AddWithValue("@username", txtUsername.Text);
       command.Parameters.AddWithValue("@password", txtPassword.Text);
    
       SqlDataReader reader = null;
       reader = command.ExecuteReader();
    
       if (reader.Read())
       {
           Session["Username"] = txtUsername.Text;
           Session["Password"] = txtPassword.Text;
           Response.Redirect("main.aspx");
       }
       else
       {
           lblError.Visible = true;
           lblError.Text = "Incorrect Username/Password Combination";
       }
        conn.Close();
    
    }
    
        5
  •  0
  •   Anuja Pawar    15 年前

    你犯了什么错误还不清楚。但我觉得你的联系是开放的,从来没有关闭过。尝试

    c、 关闭();

    推荐文章