1

データベーステーブルとして登録しています。ユーザーが入力した情報を SQL Server データベースに更新したいと考えています。エラーは発生しませんが、データキーがデータベースに更新されません。私のコードに問題がある場合は、誰か助けてください。ありがとう。

protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");

    SqlCommand cmd = new SqlCommand("UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", con);

    con.Open();

    cmd.Parameters.AddWithValue("@username", TextBoxUsername.Text);
    cmd.Parameters.AddWithValue("@password", TextBoxPassword.Text);
    cmd.Parameters.AddWithValue("@retypepassword", TextBoxRPassword.Text);
    cmd.Parameters.AddWithValue("@gender", DropDownListGender.Text);
    cmd.Parameters.AddWithValue("@birth", DropDownListDay.Text);
    cmd.Parameters.AddWithValue("@address", TextBoxAddress.Text);
    cmd.Parameters.AddWithValue("@city", TextBoxCity.Text);
    cmd.Parameters.AddWithValue("@country", DropDownListCountry.Text);
    cmd.Parameters.AddWithValue("@postcode", TextBoxPostcode.Text);
    cmd.Parameters.AddWithValue("@email", TextBoxEmail.Text);
    cmd.Parameters.AddWithValue("@carno", TextBoxCarno.Text);

    cmd.ExecuteNonQuery();

    con.Close();

    if (IsPostBack)
    {
        Response.Redirect("UpdateSuccess.aspx");
    }

確認をクリックした後gender、男性から女性への列のみを更新し、他の列のデータは更新されません。

4

5 に答える 5

2

@username が UPDATE と WHERE の両方で使用されていることが原因である可能性があります。変更された場合、WHERE は間違ったものになり、変更されていない場合は、クエリから除外される可能性があります。

于 2012-12-30T10:11:38.270 に答える
-1
protected void Button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");

    SqlCommand cmd = new SqlCommand("SELECT * FROM registration WHERE username = " + TextBoxUsername.Text + "UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", con);

    con.Open();

    cmd.Parameters.AddWithValue("@username", TextBoxUsername.Text);
    cmd.Parameters.AddWithValue("@password", TextBoxPassword.Text);
    cmd.Parameters.AddWithValue("@retypepassword", TextBoxRPassword.Text);
    cmd.Parameters.AddWithValue("@gender", DropDownListGender.Text);
    cmd.Parameters.AddWithValue("@birth", DropDownListDay.Text);
    cmd.Parameters.AddWithValue("@address", TextBoxAddress.Text);
    cmd.Parameters.AddWithValue("@city", TextBoxCity.Text);
    cmd.Parameters.AddWithValue("@country", DropDownListCountry.Text);
    cmd.Parameters.AddWithValue("@postcode", TextBoxPostcode.Text);
    cmd.Parameters.AddWithValue("@email", TextBoxEmail.Text);
    cmd.Parameters.AddWithValue("@carno", TextBoxCarno.Text);

    cmd.ExecuteNonQuery();

    con.Close();

    if (IsPostBack)
    {
        Response.Redirect("UpdateSuccess.aspx");
    }
于 2017-12-24T03:07:46.957 に答える
-1

SQL更新

SqlCommand cmd = new SqlCommand("update[テスト].[dbo].[学生] set name= '" + tb1.Text + "',age='" + tb2.Text + "',mobile='" + tb3 .Text+ "' where id = '" + tb4.Text + "'", con);

于 2017-07-18T11:19:26.947 に答える
-3

ページの読み込みでは、すべてのデータが再度読み込まれ、ページの読み込み後にButton1_Clickが実行され、すべてのデータが失われたと思います。page_loadメソッドでコードを試すことができます。

private void Page_Load()
{
    if (IsPostBack)
    {
        SqlConnection con = new SqlConnection("Data Source=USER-PC;Initial Catalog=webservice_database;Integrated Security=True");

    SqlCommand cmd = new SqlCommand("UPDATE registration SET username = @username, password = @password, retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno " + "WHERE username = @username", con);

    con.Open();
.
.
.

    }
}
于 2012-12-30T10:20:26.627 に答える
-4

私はそのタイプの構文を見たことがありません。通常、パラメーターを使用している場合はstored proc(ベスト プラクティス) を使用しています。を使用している場合はinline SQLSQLステートメントを単一のテキスト行として作成し、実行します。それらのいずれかの再コーディングをお勧めします。

開始したことを試してみたい場合は、SQL最初にすべての変数を宣言する必要があります。例えば

SqlCommand cmd = new SqlCommand("declare @username varchar(100), @password varchar(100), 
@retypepassword varchar(100) @gender varchar(10), @birth date, @address varchar(100), 
@city varchar(100) @country varchar(100), @postcode varchar(10), @email varchar(100), 
@carno varchar(100) UPDATE registration SET username = @username, password = @password, 
retypepassword = @retypepassword, gender = @gender, birth = @birth, address = @address, 
city = @city, country = @country, postcode = @postcode, email = @email, carno = @carno", 
con);
于 2012-12-31T05:46:29.850 に答える