访问DataSet的Rows属性时出错

时间:2013-02-20 12:10:06

标签: c# datatable dataset

我需要创建一个简单的登录页面并在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!";
    }
}

2 个答案:

答案 0 :(得分:1)

DataSet没有Rows属性。 DataTable。在代码中将ds.Rows替换为ds.Tables[0].Rows

还有一点:使用Parameterized SqlComamnd。您的代码对SQL注入攻击开放

答案 1 :(得分: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的说法,了解DataSetDataTableParameterized SqlComamnd