2016-07-14 2 views
0

난 내가이 매개 변수SQL은 목록으로 결과를 가져옵니다 매개 변수

new SqlParameter("@UserID", userIDList)

에 목록을 첨부 할 수 없기 때문에

List<int> userIDList = new List<int>() { 1,2,3,4,5 }; 
string Command = "SELECT FirstName, LastName FROM User WHERE UserID in @UserID;"; 
using (SqlConnection myConnection = new SqlConnection(ConnectionString)) 
{ 
    using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(Command, myConnection)) 
    { 
     myDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@UserID", userIDList)); 
     DataTable dt = new DataTable(); 
     myDataAdapter.Fill(dt); 
    } 
} 

는하지만이 작동하지 않는 코드를 가지고 무엇 여기에가는 길이 란 말인가?

+0

를 사용하여 테이블 반환 매개 변수와 같은 쿼리 문자열을 사용하여 쉼표로 구분 된 문자열 목록을 변환해야합니다. http://stackoverflow.com/questions/43249/t-sql-stored-procedure-that-accepts-multiple-id-values ​​ –

+0

@TimSchmelter는 JaydipJ가 조금 더 간단하게 대답하지 않습니까? –

+0

모든 사용자를 등록 하시겠습니까? – NEER

답변

0

먼저 당신이

myDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@UserID", 
               String.join(",",userIDList)));; 

다음이

string Command = "SELECT FirstName, LastName FROM User WHERE UserID in (@UserID);"; 
+1

'IN'에 전달하는 각 값에 대해 하나의 매개 변수가 필요하다. 이러한 대답과 마찬가지로 : http://stackoverflow.com/a/2377651/284240 더 나은 (보다 효율적인) 방법은 테이블 반환 매개 변수를 사용하는 것입니다. –

+0

도 여전히 비슷한 방식으로 작동하며 둘 다 동일한 출력을 산출합니다. –

+0

나는 의심의 여지가 있습니다. 'UserID'는'int' 컬럼처럼 보이기 때문에'string' /'varchar'를 넘겨 주므로 데이터베이스가 그것을 유효한 인수로 거부 할 것으로 기대합니다. 적어도 하나 이상을 통과한다면. –

관련 문제