我需要创建一个简单的登录页面并在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!";
}
}
答案 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的说法,了解DataSet,DataTable和Parameterized SqlComamnd。