당신이 사용자 또는 외부 소스로부터 입력을 읽을 때마다 몇 가지 추가 정보를 제공하고 싶어, 당신은 항상 항상 항상 구축하기 전에 그것을 탈출한다 그것으로부터의 SQL 커멘드
이 작업을 수행하는 한 가지 방법은 준비된 문이나 저장 프로 시저를 사용하고 기본 제공 함수 호출을 사용하여 변수를 설정하는 것입니다. 그런 다음 함수가 이스케이프를 처리합니다.
SQL을 직접 작성하거나 손으로 빌드해야하는 경우 SQL을 이스케이프 처리하는 함수를 작성하십시오. 대부분의 SQL 엔진의 경우, 즉,
팻 오하라는 '안녕하세요'
팻 O''Hara 말했다
로했다
를 설정하고,이를 임베디드 따옴표를 찾아 두 번에 충분하다 ''Hello '
일부 SQL 엔진에는 이스케이프가 필요한 다른 문자가 있습니다. Postgres처럼 백 슬래시도 두 번 사용해야합니다.
이 작업을 수행하는 함수를 작성하기는 쉽지만 항상 사용하십시오.
필자는 프로그래머들과 많은 대화를 나누었습니다. 사람들이이 특정 필드에 인용 부호를 입력 할 가능성이 있다고 생각하지 않았기 때문에이 경우에는 신경 쓰지 않는다고 말합니다. 그러나 보통 우리가 대화를하는 이유는 누군가가 한 것이기 때문입니다. 그것을 분석하지 마십시오! 그냥 해! 그것은 안전 벨트를 착용하는 것과 같습니다. 거기에 앉아서이 특별한 여행에서 우연히 생길 확률을 계산할 수 있습니다. 그러나 그 이유는 무엇입니까? 지혜로운 운전자는 운전대에서 길가로 차를 옮기는 것 뿐인데도 불구하고, 항상 안전 벨트를 착용하는 정신없는 자동 조치를 취합니다. 현명한 데이터베이스 프로그래머는 당신이 알지 못하기 때문에 항상 입력 문자열을 이스케이프합니다.
출처
2011-09-20 17:05:56
Jay
어떻게 DB에 저장하려고합니까? DB에 저장할 때 사용중인 코드를 볼 수 있습니까? DB에 업데이트를 보낼 때 매개 변수화를 사용해야합니다. –
@ 존, 저장 쿼리는 매우 간단한 ExecuteNonQuery입니다. 매개 변수화 란 무엇을 의미합니까? – DotNetRookie
데이터베이스에 저장할 때 이와 같이 쿼리 문을 작성하면 안됩니다. 'query = "Table1 세트를 업데이트하십시오. Column1 ='"& someStringVar & " 'PrimaryKey ='& someStringVar2 &" ' "'대신이 링크 http://www.codinghorror.com/blog에서 보여지는 매개 변수화 된 쿼리를 사용해야합니다. /2005/04/give-me-parameterized-sql-or-give-me-death.html –