문제

C ++에서 선택 쿼리를 준비하기 위해 StringStream을 사용했습니다. 그러나 쿼리 매개 변수를 사용하여 DB2 SQL 쿼리를 제출하여 StringStream 사용을 피하는 것이 좋습니다. 누구든지 C ++의 쿼리 매개 변수의 의미를 공유 할 수 있습니까? 또한 실용적인 샘플 코드 스 니펫을 공유하십시오.

미리 도움을 주셔서 감사합니다.

편집 : 그것은 stringstream이며 strstream이 아닙니다.

감사합니다, Mathew Liju

도움이 되었습니까?

해결책

나는 이것이 문자열로 쿼리를 구성하는 대신 일반적으로 매개 변수화 된 쿼리를 말하고 SQL 변수 (또는 매개 변수)를 제공 한 다음 해당 변수를 개별적으로 전달한다고 생각합니다. SQL 주입 공격을 처리하는 데 훨씬 좋습니다. 예를 들어 설명하기 위해 :

"SELECT * FROM Customers WHERE CustomerId = " + _customerId; 

이것은 나쁘지만 :

"SELECT * FROM Customers where CustomerId = @CustomerId" 

좋다. 캐치는 쿼리 객체에 매개 변수를 추가해야한다는 것입니다 (C ++에서 어떻게 수행되는지 모르겠습니다.

다른 질문에 대한 언급 :

와일드 와일드 웹 :

다른 팁

매개 변수화 된 쿼리 양식의 SQL 쿼리는 SQL 주입 공격을 피하기 위해 문자열 형식보다 안전합니다. 매개 변수화 쿼리의 예

StringBuilder sqlstr = new StringBuilder();  
cmd.Parameters.AddWithValue("@companyid", CompanyID);  
sqlstr.Append("SELECT evtconfigurationId, companyid, 
  configname, configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid=@companyid ");

쿼리 문자열 형식의 예

StringBuilder sqlstr = new StringBuilder();   
sqlstr.Append("SELECT evtconfigurationId, companyid, configname, 
   configimage FROM SCEVT_CONFIGURATIONS ");
sqlstr.Append("WHERE companyid" +  CompanyID);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top