2011-01-09 11 views
3

Hier ist ein ASPX Code-Snippet von, als ich versuchte, mehrere Werte aus einer Sitzung zu bekommen. Ich erhalte eine Fehlermeldung: „Falsche Syntax in der Nähe von Komma“ (die Zeile im Code-Schnipsel markiert):Falsche Syntax in der Nähe von Komma

SqlCommand cmd1 = new SqlCommand("select plugin_id from profiles_plugins where profile_id=" + Convert.ToInt32(Session["cod"]), con); 
     SqlDataReader dr1 = cmd1.ExecuteReader(); 
     var yourlist =new List<Int32>(); 
     if (dr1.HasRows) 
     { 
      while (dr1.Read()) 
      { 
       yourlist.Add(Convert.ToInt32(dr1[0])); 
      } 
     } 

     //String str1 = String.Join(", ", yourlist.Select(o => o.ToString()).ToArray()); 
      dr1.Close(); 
     cmd1.Dispose(); 
     Array k= yourlist.ToArray(); 
     Int32 a =Convert.ToInt32(k.GetValue(0)); 
     Int32 b =Convert.ToInt32(k.GetValue(1)); 
     Int32 c =Convert.ToInt32(k.GetValue(2)); 
     Int32 d =Convert.ToInt32(k.GetValue(3)); 
     SqlCommand cmd2 = new SqlCommand("select id,name from plugins where id =(" + a + " or " + b + " or " + c + " or " + d + ")" , con); /// Error here? 
     SqlDataReader dr2 = cmd2.ExecuteReader(); ///Error here? 
     if (dr2.HasRows) 
     { 
      while (dr2.Read()) 
      { 
       ListBox2.DataSource = dr2; 
       ListBox2.DataBind(); 
      } 
     } 
     dr2.Close(); 
     cmd2.Dispose(); 
con.Close(); 

Was bin ich?

+3

Sie sollten Antworten auf Ihre Fragen akzeptieren. – SLaks

+1

Sie sollten die besten Antworten akzeptieren :) – Kuncevic

Antwort

7

SQL-Abfrage ist falsch. Ändern Sie es in:

SqlCommand cmd2 = new SqlCommand("select id,name from plugins 
where id in(" + a + " , " + b + " , " + c + " , " + d + ")" , con); 
2

Fehler in dieser Zeile. Versuchen Sie, diese

SqlCommand cmd2 = new SqlCommand("select id,name from plugins where id =" + a + "or id =" + b + " or id =" + c + " or id =" + d + "" , con) 
+1

Sie benötigen keine Klammern. – SLaks

+0

ja wie diese waren im original code so einfach weiter gemacht. Entfernt jetzt :) –

1

In Ihrem Fall anstelle von mehreren Bedingungen OR Ich würde vorschlagen, IN-Klausel in der SQL-Abfrage zu verwenden, und statt. .. + "" + ... Ich würde verwenden String.Format

SqlCommand cmd2 = new SqlCommand(String.Format("select id,name from plugins where id IN ({0}, {1}, {2}, {3}", a, b, c, d,) con); 

Auch wenn Sie die gleiche oder ähnliche Fehler in Zukunft haben würden Sie Ihre Anfrage direkt auf SQL Server überprüfen kann. Öffnen Sie einfach das Fenster Neue Abfrage und kopieren Sie Ihre SQL-Abfrage dort und führen Sie sie dann aus. In diesem Fall wäre es so etwas wie:

select id,name from plugins where id IN (1, 2, 3, 4) 
Verwandte Themen