2011-03-09 3 views

답변

1

잘못된 진술이 있습니다.

를 사용하는 대신,

SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES("+currTopicID.ToString()+")", con); 

또는는 매개 변수화 쿼리를 사용합니다.

+0

** currTopicID.ToString() ** – richardtallent

+1

@richardtallent이 (가) 고쳐 주셔서 감사합니다. – Adeel

+0

이 명령은 변환 작업으로 인해 매우 안전하지만 일반적으로 값을 명령 텍스트에 직접 삽입하는 것은 좋지 않습니다. 대신 매개 변수를 사용해야합니다. –

0

MS SQL에서 변수를 전달할 때 매개 변수를 사용하는 것이 가장 좋습니다. 더 나은 저장 프로 시저를 사용

2
대신 매개 변수를 사용할 수 있습니다

:

int currTopicID = Convert.ToInt32(id.Text); 

SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES(@currTopicID)", con); 

cmd.Parameters.Add("@currTopicID", SqlDbType.Int).Value = currTopicID.Tostring(); 

//OR cmd.Parameters.AddWithValue("@currTopicID",currTopicID.Tostring()); 

cmd.ExecuteNonQuery(); 

안부

+0

나는 이것에 문제가 있었다 : cmd.Parameters.Add ("@ currTopicID", SqlDbType.Int, 4) .Value = currTopicID; 두 단계로 나눌 수 있습니다. cmd.Parameters.Add ("@ currTopicID", SqlDbType.Int, 4); cmd.Parameters [ "@ currTopicID"]. 값 = currTopicID; –

+0

예외는 무엇입니까? – Crimsonland

+0

지금은 기억할 수 없지만 호환되지 않는 유형과 관련이 있습니다. –

0

당신은 정말 매개 변수를 사용하여 저장 프로 시저를 사용해야합니다. 이렇게하면 SQL 주입을 피할 수 있습니다.

관련 문제