-2

ここでユーザーを登録します。最後に、登録が成功したかどうかを確認したいので、次のページに進む必要があります..IF条件でエラーが発生しました

  protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("Data Source=AAZZZ;Initial Catalog=DRDB;User ID=sa;Password=sa123");
        SqlCommand cmd = new SqlCommand("UserRegistration_SP", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);
        cmd.Parameters.AddWithValue("@Lastname", TextBox2.Text);
        cmd.Parameters.AddWithValue("@Username", TextBox3.Text);
        cmd.Parameters.AddWithValue("@Password", TextBox4.Text);
        cmd.Parameters.AddWithValue("@ConfirmPassword", TextBox5.Text);
        cmd.Parameters.AddWithValue("@Address1", TextBox6.Text);
        cmd.Parameters.AddWithValue("@Address2", TextBox7.Text);
        cmd.Parameters.AddWithValue("@Address3", TextBox8.Text);
        cmd.Parameters.AddWithValue("@Telephone", TextBox9.Text);
        cmd.Parameters.AddWithValue("@Email", TextBox10.Text);

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

        if (Registration == Successful)
        {
            Response.Redirect("Registration2.aspx");
        }
        else {
            lblinfo.Text = "Some error has happend";
        }



    }
4

2 に答える 2

1

挿入または更新を行っていて、値が何であるか、Registration == Succesfulまたはそれらをどのように取得しているかわからないと仮定します

だからチェックif cmd.ExecuteNonQuery()しないreturn -1ので-1 means a rollback

   con.Open();
    int result = cmd.ExecuteNonQuery();
    con.Close();

    if (result != -1)
    {
        Response.Redirect("Registration2.aspx");
    }
    else {
        lblinfo.Text = "Some error has happend";
    }
于 2012-07-31T17:48:39.827 に答える
1

SQLクエリが行を処理/影響したかどうかを判断しようとしているだけですか?

    SqlConnection con = new SqlConnection("Data Source=AAZZZ;Initial Catalog=DRDB;User ID=sa;Password=sa123");
    SqlCommand cmd = new SqlCommand("UserRegistration_SP", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@Firstname", TextBox1.Text);
    cmd.Parameters.AddWithValue("@Lastname", TextBox2.Text);
    cmd.Parameters.AddWithValue("@Username", TextBox3.Text);
    cmd.Parameters.AddWithValue("@Password", TextBox4.Text);
    cmd.Parameters.AddWithValue("@ConfirmPassword", TextBox5.Text);
    cmd.Parameters.AddWithValue("@Address1", TextBox6.Text);
    cmd.Parameters.AddWithValue("@Address2", TextBox7.Text);
    cmd.Parameters.AddWithValue("@Address3", TextBox8.Text);
    cmd.Parameters.AddWithValue("@Telephone", TextBox9.Text);
    cmd.Parameters.AddWithValue("@Email", TextBox10.Text);

    con.Open();
    int result = cmd.ExecuteNonQuery();
    con.Close();

    if (result > 0) // I assume you want rows to be affected
    {
        Response.Redirect("Registration2.aspx");
    }
    else
    {
        lblinfo.Text = "Some error has happend";
    }

MSDN - 「UPDATE、INSERT、および DELETE ステートメントの場合、戻り値はコマンドによって影響を受ける行数です。挿入または更新されるテーブルにトリガーが存在する場合、戻り値には両方の挿入によって影響を受ける行数が含まれます。または更新操作と、1 つまたは複数のトリガーによって影響を受ける行数。他のすべてのタイプのステートメントの場合、戻り値は -1 です。ロールバックが発生した場合、戻り値も -1 です。"

于 2012-07-31T17:49:12.583 に答える