2010-06-13 71 views
0

有人可以糾正我下面的查詢,我是軟件開發領域的新手, 我是以逗號分隔形式查詢字符串生成器對象,但它沒有產生期望的結果qyery如下和 string cmd =「SELECT * FROM [placed_student] WHERE passout_year = @ passout AND company_id = @ companyId AND course_id = @ courseId AND branch_id IN('」+ sb +「')」;幫我用下面的sql查詢

StringBuilder sb = new 
    StringBuilder(); 
       foreach (ListItem li in branch.Items) 
       { 

        if (li.Selected == true) 
        { 
         sb.Append(Convert.ToInt32(li.Value) 
    +", "); 
        } 
       } 
li is integer value of my check box list which are getting generated may be differne at different time ...please also suggest me some good source to learn sql.. 

回答

1

你的問題就在這裏:

AND branch_id IN('" + sb + "')" 

你會擁有像查詢:

... AND branch_id IN('1,2,3,') 

如果branch_id列是一個整數,你不應該引用它,並且您應該稍微不同地插入逗號以避免後面的逗號,例如:

StringBuilder sb = new StringBuilder(); 
String sep = ""; 
foreach (ListItem li in branch.Items) { 
    if (li.Selected == true) { 
     sb.Append (sep + Convert.ToInt32(li.Value)); 
     sep = ","; 
    } 
} 
String cmd = "SELECT * FROM [placed_student] " + 
     "WHERE passout_year = @passout " + 
     "AND company_id = @companyId " + 
     "AND course_id = @courseId " + 
     "AND branch_id IN (" + sb + ")"; 

這可以通過將初始分隔符設置爲空字符串,然後在添加每個項目後添加到逗號來實現。因此,當添加A,B和C時,您將得到「A」,「A,B」和「A,B,C」。需要趕上你的項目沒有被選中的情況下,否則你會最終:

... AND branch_id IN() 
+0

是的,它的工作......謝謝先生/女士.........非常感謝。 .. – NoviceToDotNet 2010-06-13 05:31:49