2012-12-30 2 views
1

데이터베이스 테이블로 등록했습니다. 사용자가 입력 한 정보를 SQL Server 데이터베이스로 업데이트하려고합니다. 하지만 작동하지 않습니다, 어떤 오류가 발생하지 않지만 데이터 키가 내 데이터베이스로 업데이 트되지 않습니다. 내 코드에 문제가 있으면 누군가 나를 도우 려니? 감사. 나는 그것을 확인을 클릭하면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를 업데이트합니다.

+0

테이블의 기본 키는 무엇입니까? try/catch를 추가하고 예외가 있는지 확인할 수 있습니까? –

+0

명령이 서버로 전송 될 때 어떻게 보이나요? 정식 버전을 사용하는 경우 프로파일 러를 사용하여 서버로 전송되는 내용을 검사하십시오. – alzaimar

+0

제로 센스를 만드는 것처럼 보입니다. 진지하게. where 절에도 UPNATE ON USERNAME이 없습니다. 이름 설정 = a 여기서 name = a? 기본 키를 절대 업데이트하지 마십시오. 오류 메시지도 보내주십시오. – TomTom

답변

2

@username이 UPDATE와 WHERE 모두에서 사용되기 때문일 수 있습니다. 변경되면 WHERE가 잘못되며 변경되지 않으면 쿼리에서 제외 될 수 있습니다.

-3

난 당신이 페이지로드 후에 실행 다시 모든 데이터를 Button1_Click로드하고 당신이

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(); 
. 
. 
. 

    } 
} 
+0

-1. 덜 생각하고, 더 정확한 답을? SQL은 시작하기에 골칫거리입니다. – TomTom

-4

내가 그 유형을 본 적이 없다 당신이를 Page_Load 메서드에서 코드를 모든 데이터를 시도 할 수 있습니다 손실 페이지로드 생각 통사론. 일반적으로 매개 변수를 사용하는 경우 stored proc을 사용합니다 (모범 사례). inline SQL을 사용하는 경우 SQL 문을 하나의 텍스트 행으로 작성하여 실행합니다. 나는 그 중 하나에 대한 recoding하는 것이 좋습니다 것입니다.

시작한 것을 시도하려면 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); 
+0

인라인 SQL 텍스트에 매개 변수를 사용할 수있는 요일은 필요하지 않으며 인라인으로 작업 할 때 위에 설명한 것처럼 변수를 선언하고 싶지는 않습니다. –

+1

누가 업데이트 진술서를 발행 한 적이 가장 부 풀었습니다. – TomTom

-1

SQL 업데이트

하는 SqlCommand cmd를 = 새로운하는 SqlCommand ("업데이트 [테스트]. [dbo가]. [학생] 세트 이름 = '"+ tb1.Text + "'시대 = ' "+ tb2.Text +" ', mobile =' "+ tb3.Text +" '여기서 id =' "+ tb4.Text +" ' ", con);

+0

스택 오버플로에 오신 것을 환영합니다 :-) [답변]을 참조하십시오. 코드가 문제를 해결하는 이유에 대한 정보를 제공해야합니다. 코드 전용 답변은 커뮤니티에 유용하지 않습니다. – JimHawkins

-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"); 
    } 
+1

작업 코드를 게시하는 것은 좋은 답변이 아니므로 실수가 어디에 있었는지 설명하십시오. – Atsch

관련 문제