2013-04-13 4 views
0
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["cnnFinalProject"].ToString()); 
SqlCommand cmd = new SqlCommand(@"SELECT c.partID, p.name, p.categoryID, p.price, p.image, p.subCategoryID, 
             (CASE WHEN categoryID = 1 THEN 'Y' ELSE 'N' END) AS casesYN, 
             (CASE WHEN categoryID = 3 THEN 'Y' ELSE 'N' END) AS OSYN, 
             (CASE WHEN categoryID = 7 THEN 'Y' ELSE 'N' END) AS HDDYN, 
             (CASE WHEN subCategoryID = 1 THEN 'Y' ELSE 'N' END) AS powerYN, 
             (CASE WHEN subCategoryID = 2 THEN 'Y' ELSE 'N' END) AS processorYN, 
             (CASE WHEN subCategoryID = 3 THEN 'Y' ELSE 'N' END) AS moboYN, 
             (CASE WHEN subCategoryID = 4 THEN 'Y' ELSE 'N' END) AS memoryYN, 
             (CASE WHEN subCategoryID = 5 THEN 'Y' ELSE 'N' END) AS graphicsYN, 
             (CASE WHEN subCategoryID = 6 THEN 'Y' ELSE 'N' END) AS opticalYN, 
             (CASE WHEN subCategoryID = 7 THEN 'Y' ELSE 'N' END) AS soundYN 
             FROM configuration c JOIN parts p ON p.partID = c.partID 
             WHERE c.customID = @ID", conn); 
     conn.Open(); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     while (dr.Read()) 
     { 
     string[] cases = { dr["partID"].ToString() }; 
     } 

케이스 배열에 'casesYN'값이 Y로 설정된 partID 만 삽입 할 수 있습니다. 이제는 sql 쿼리에 'partID'를 모두 삽입하므로 어떻게 할 수 있습니까?데이터베이스에서 배열 채우기 C#

답변

5

SQL 쿼리를 변경하고 싶지 않다고 가정했습니다.

사용 List<string> 대신 string[] 그것에 새로운 항목을 추가하는 것이 더 쉽습니다 때문에 : 루프가 끝난 후 당신이 정말로 배열을해야하는 경우

var cases = new List<string>(); 
while (dr.Read()) 
{ 
    if(dr["casesYN"].ToString() == "Y") 
     cases.Add(dr["partID"].ToString()); 
} 

, 당신은 항상 ToArray() 메서드를 호출 할 수 있습니다 :

string[] casesArray = cases.ToArray(); 

하지만 파일 상단에 using System.Linq이 필요합니다.

관련 문제