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プロパティがありません。DataTableはそうします。ds.Rowsコード内でに置き換えds.Tables[0].Rowsます。

もう1つのポイント:ParameterizedSqlComamndを使用します。コードは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 に答える