2014-04-25 3 views
1

내 DB에 뷰가 있으며 뷰에 검색하려고하는 행이 있습니다. 나는 SQL 서버에서 그것을 테스트하고 올바른 결과를 반환했습니다. 그러나 VB에서 매개 변수로 시도 할 때 아무것도 반환하지 않습니다. 내가 쿼리를 얻을 SQL 코드는 매개 변수가있는 SQL은 info.search = "던"와SQL 매개 변수가있는 쿼리가 올바른 결과를 반환하지 않습니다.

SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY groupID DESC) AS Row, * 
FROM schedulingGroup_VIEW 
WHERE (scheduled = 1) AND 
((building LIKE '%' + @search + '%') 
    OR (room LIKE '%' + @search + '%') 
    OR (requestBy LIKE '%' + @search + '%') 
    OR (requestFor LIKE '%' + @search + '%') 
    OR (groupID LIKE '%' + @search + '%') 
    OR (description LIKE '%' + @search + '%')) 
AND 
    (NOT EXISTS (SELECT gID FROM facilitiesForm 
    WHERE facilitiesForm.gID <> gID))) AS TMP WHERE (Row BETWEEN 0 AND 100) 

sqlComm.Parameters.AddWithValue("@search", info.search) 

과 같은

SELECT * 
FROM 
    (SELECT 
     ROW_NUMBER() OVER (ORDER BY groupID DESC) AS Row, * 
    FROM 
     SchedulingGroup_VIEW 
    WHERE 
     (scheduled = 1) 
     AND ((building LIKE '%dunn%') OR (room LIKE '%dunn%') 
      OR (requestBy LIKE '%dunn%') OR (requestFor LIKE '%dunn%') 
      OR (groupID LIKE '%dunn%') OR (description LIKE '%dunn%')) 
     AND (NOT EXISTS (SELECT gID FROM facilitiesForm 
         WHERE facilitiesForm.gID <> gID))) AS TMP 
WHERE 
    (Row BETWEEN 0 AND 100) 

같은 올바른 결과가 보인다 돌아갑니다.

sql 쿼리는 적절한 행을 반환하지만 매개 변수가있는 vb.net에서는 아무 것도 반환하지 않습니다.

답변

2

매개 변수로 전달하기 전에 와일드 카드 (예 : % 문자)를 VB.net 문자열로 이동하십시오. 당신이 LIKE 문에 @search 매개 변수를 사용할 때 아래와 같은

예를 들어, 와일드 카드를 추가하지 않습니다 ... VB.net 코드에서

sqlComm.Parameters.AddWithValue("@search", "%" + info.search + "%"); 

을 이렇게 그리고 당신의 SQL에 ...

WHERE building LIKE @search 

은 본질적으로 같은 질문이 SO 게시물을 ... 참조

How to use wildcards in SQL query with parameters

+0

나는 이것을 투표로하고 대답으로 두었습니다. 나는 매개 변수가 두 가지 방법으로 설정되는 것을 보았습니다. 또한 테스트 db를 라이브 미러로 만드는 데 도움이됩니다. 감사. – willJk

+0

이것은 SQL 주입을 방지하기 때문에 더 좋습니다. – sovemp

+0

동일한 문제가 있습니까? – SearchForKnowledge

관련 문제