0

我需要创建一个简单的登录页面并在 Rows 上收到错误...

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("server=AMR\\DEV1;UID=po;PWD=12W; database=POM;");
    con.Open();
    SqlCommand cmd = new SqlCommand("select * from budget where id='" + TextBox1.Text + "' and amount='" + TextBox2.Text + "'", con);
    DataSet ds = new DataSet();
    ds.Clear();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    if (ds.Rows.Count > 0) {
        Session["user"] = TextBox1.Text;
        Response.Redirect("Default2.aspx");
    } else {
        TextBox1.Text = "";
        TextBox2.Text = "";
        Label1.Text = "Invalid Login Details!";
    }
}
4

2 回答 2

1

DataSet没有Rows属性。数据表可以。在您的代码中替换ds.Rows为。ds.Tables[0].Rows

还有一点:使用参数化 SqlComamnd。您的代码易受 SQL 注入攻击

于 2013-02-20T12:12:47.850 回答
0

你的代码有很多问题。我在需要的地方改了

protected void Button1_Click(object sender, EventArgs e)
{
 SqlConnection con = new SqlConnection("server=AMR\\DEV1;UID=po;PWD=12W; database=POM;");
 con.Open();
 SqlCommand cmd = new SqlCommand("select * from budget where id=@id and amount=amount", con);
 cmd.Parameters.AddWithValue("@id",TextBox1.Text);
 cmd.Parameters.AddWithValue("@amount",TextBox2.Text);
 DataSet ds = new DataSet();
 ds.Clear();
 SqlDataAdapter da = new SqlDataAdapter(cmd);
 da.Fill(ds);

 if (ds.Tables[0].Rows.Count > 0) 
 {
    Session["user"] = ds.Tables[0].Rows[0][0].ToString();
    Response.Redirect("Default2.aspx");
 }
  else {
    TextBox1.Text = "";
    TextBox2.Text = "";
    Label1.Text = "Invalid Login Details!";
 }
}

学习Andrey Gordeev 所说的DataSetDataTable参数化 SqlComamnd

于 2013-02-20T12:29:57.550 回答