문자열을 정수로 변환하고이 정수를 내 게시물 테이블에 삽입하는 것보다.SQL 문에서 내 코드의 변수를 사용하는 방법은 무엇입니까?
문제는 삽입을 할 때 currTopicID가 정수로 인식되지 않는다는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.
문자열을 정수로 변환하고이 정수를 내 게시물 테이블에 삽입하는 것보다.SQL 문에서 내 코드의 변수를 사용하는 방법은 무엇입니까?
문제는 삽입을 할 때 currTopicID가 정수로 인식되지 않는다는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.
잘못된 진술이 있습니다.
를 사용하는 대신,
SqlCommand cmd = new SqlCommand("INSERT INTO post VALUES("+currTopicID.ToString()+")", con);
또는는 매개 변수화 쿼리를 사용합니다.
MS SQL에서 변수를 전달할 때 매개 변수를 사용하는 것이 가장 좋습니다. 더 나은 저장 프로 시저를 사용
:
이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();
안부
나는 이것에 문제가 있었다 : cmd.Parameters.Add ("@ currTopicID", SqlDbType.Int, 4) .Value = currTopicID; 두 단계로 나눌 수 있습니다. cmd.Parameters.Add ("@ currTopicID", SqlDbType.Int, 4); cmd.Parameters [ "@ currTopicID"]. 값 = currTopicID; –
예외는 무엇입니까? – Crimsonland
지금은 기억할 수 없지만 호환되지 않는 유형과 관련이 있습니다. –
당신은 정말 매개 변수를 사용하여 저장 프로 시저를 사용해야합니다. 이렇게하면 SQL 주입을 피할 수 있습니다.
** currTopicID.ToString() ** – richardtallent
@richardtallent이 (가) 고쳐 주셔서 감사합니다. – Adeel
이 명령은 변환 작업으로 인해 매우 안전하지만 일반적으로 값을 명령 텍스트에 직접 삽입하는 것은 좋지 않습니다. 대신 매개 변수를 사용해야합니다. –