2011-02-22 4 views
2

에서 MySQL의 쿼리를 실행합니다이유는이 명령이 제대로 실행 실 거예요 asp.net

using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '@1', url = '@2' WHERE company = '@3'; ", myConn)) 
    { 
     myCommand.Parameters.AddWithValue("@1", email); 
     myCommand.Parameters.AddWithValue("@2", url); 
     myCommand.Parameters.AddWithValue("@3", company); 
     myConn.Open(); 
     myCommand.ExecuteNonQuery(); 
    } 

을하지만 실제 값으로 3 @ 대체 할 때 작동 :

using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '@1', url = '@2' WHERE company = 'MyCompany'; ", myConn)) 
{ 
    myCommand.Parameters.AddWithValue("@1", email); 
    myCommand.Parameters.AddWithValue("@2", url); 

    myConn.Open(); 
    myCommand.ExecuteNonQuery(); 
} 

이 값은 위해 전달되는 회사 변수는 두 번째 예에서 하드 코드 된 값과 동일합니다. 필자는 디버거를 통해 회사 변수가 매개 변수로 추가되었는지, 그리고 필자가 기대하는 값인지 확인했습니다. 즉. 공백없이 트림()

나는 무엇을 잘못하고 있는지 알 수 있습니까?

업데이트 : "?"나는 MySQL을 사용하려는 명령에 대한 생각

이것은 또한 작동하지만, 그때는 SQL 인젝션에 대해 걱정할 필요가 ...

string myQuery = string.Format("Update jobs SET poster_email = '{0}', url = '{1}' WHERE company = '{2}'; ", email, url, company); 

    using (MySqlCommand myCommand = new MySqlCommand(myQuery, myConn)) 
    { 
     myConn.Open(); 
     myCommand.ExecuteNonQuery(); 
    } 

답변

1

대신에 "@"의 :

using (MySqlCommand myCommand = new MySqlCommand("Update jobs SET poster_email = '?1', url = '?2' WHERE company = '?3'; ", myConn)) 
{ 
    myCommand.Parameters.AddWithValue("?1", email); 
    myCommand.Parameters.AddWithValue("?2", url); 
    myCommand.Parameters.AddWithValue("?3", company); 
    myConn.Open(); 
    myCommand.ExecuteNonQuery(); 
} 

http://dev.mysql.com/doc/refman/5.0/es/connector-net-examples-mysqlcommand.html#connector-net-examples-mysqlcommand-parameters

+0

나는 그것이 차이를하지, 그것을 시도했다 ... – Pedro

관련 문제