2011-12-14 2 views
1

텍스트 상자의 데이터를 데이터베이스에 삽입하려고 할 때 예외가 발생합니다.ASP.Net 텍스트 상자의 데이터를 데이터베이스에 삽입하십시오.

예외 정보 : System.Data.SqlClient.SqlException : 'test'근처의 구문이 잘못되었습니다.

내가 전에 몇 가지 세부 사항

그래도 내 코드를 제공합니다 : 내 데이터베이스라는 : 내 테이블 데이터라는 동영상 : 사용자 과 내가 같은 열이 : "FIRSTNAME", ...

등 "성"

보호 무효 Register_Click (개체 보낸 사람, EventArgs입니다 전자) { 도록 SqlConnection 연결 = 새도록 SqlConnection ("데이터 원본 = MICROSOF-58B8A5 \ SQL_SERVER_R2; 초기 카탈로그 = 영화; 통합 보안 = 진정한");

 connection.Open(); 
     //FirstName*********** 
     string firstName = FirstNameTextBox.Text; 
     string sqlquery = ("INSERT INTO [Users] (FirstName) VALUES (' " +FirstNameTextBox.Text + " ' "); 

     SqlCommand command = new SqlCommand(sqlquery , connection); 
     command.Parameters.AddWithValue("FirstName", firstName); 
     //LastName************ 
     string lastName = LastNameTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (LastName) VALUES (' " + LastNameTextBox.Text+ " ' "); 
     command.Parameters.AddWithValue("LastName", lastName); 
     //Username************* 
     string username = UsernameTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (Username) VALUES (' " + UsernameTextBox.Text+ " ' "); 
     command.Parameters.AddWithValue("UserName", username); 
     //Password************* 
     string password = PasswordTextBox.Text; 
     sqlquery = ("INSERT INTO [Users] (Password) VALUES (' " + PasswordTextBox.Text + " ' "); 
     command.Parameters.AddWithValue("Password", password); 
     if (PasswordTextBox.Text == ReTypePassword.Text) 
     { 
      command.ExecuteNonQuery(); 
     } 
     else 
     { 
      ErrorLabel.Text = "Sorry, You didnt typed your password correctly. Please type again."; 
     } 

     connection.Close(); 
    } 

답변

5

하나 개를 사용하여 쿼리 및 사용 @ParamName :

string sqlquery = "INSERT INTO [Users] (FirstName,LastName,UserName,Password) VALUES (@FirstName,@LastName,@UserName,@Password)"; 
    SqlCommand command = new SqlCommand(sqlquery , connection); 

    //FirstName*********** 
    string firstName = FirstNameTextBox.Text; 
    command.Parameters.AddWithValue("FirstName", firstName); 
    //LastName************ 
    string lastName = LastNameTextBox.Text;  
    command.Parameters.AddWithValue("LastName", lastName); 
    //Username************* 
    string username = UsernameTextBox.Text;  
    command.Parameters.AddWithValue("UserName", username); 
    //Password************* 
    string password = PasswordTextBox.Text;  
    command.Parameters.AddWithValue("Password", password); 

    ........... 
+1

매개 변수는 위험한 SQL 주입 공격을 피할 수 있습니다. – dolphy

+0

감사합니다. 작동합니다! – thormayer

0

문제는 당신이 이상한 SQL 명령어를 만드는 것 같다. 실제 값은 입니다. INSERT INTO [사용자] (이름) VALUES ('(theValue)') 이고 나머지 값 (성 등)은 추가하지 않습니다. 나머지 코드는 쿼리가 나머지 매개 변수를 포함하지 않으므로 아무런 효과가 없습니다.

관련 문제