2013-08-19 24 views
0

我創建了一個方法,它接收未指定數量的字典參數並掃描它們中的所有內容但未覆蓋相同內容,它會在第一個或第二個foreach中給出錯誤,具體取決於我修好了。 Consegundo'm不能解決這個問題。我怎樣才能使這項工作變成現實。在C中用參數瀏覽字典#

我得到params字典,我想通過每個的內容。

,我遵循下面的代碼:

public String getQuerySelectInner(String TABELA, params Dictionary<String, String> dictionaries) 
{ 
    String sql = "SELECT "; 

    foreach (Object dictionary in dictionaries) 
    { 
     foreach (var word in dictionary) 
     { 
      sql += word.Key + ","; 
     } 
    } 

    sql = sql.Remove(sql.Length - 1); 

    sql += " from " + TABELA + " WHERE situacao = 'ATIVO' "; 

    return sql; 
} 
+2

**從不使用字符串SQL。這有很多SQL注入概率。** –

+0

對象字典中的foreach單詞? 'object'不會從'IEnumerable'繼承,那麼你怎麼能通過它呢? – Nolonar

+1

這段代碼產生的錯誤是什麼? –

回答

1

您的代碼甚至不進行編譯。你是使用記事本還是實際的IDE編碼?

無論如何,如果你爲你的參數添加括號,並將你的外部foreach改爲var,而不是轉換爲它編譯的對象。這有助於給你你想要的東西嗎?

public String getQuerySelectInner(String TABELA, params Dictionary<String, String>[] dictionaries) 
    { 
     String sql = "SELECT "; 

     foreach (var dictionary in dictionaries) 
     { 
      foreach (var word in dictionary) 
      { 
       sql += word.Key + ","; 
      } 
     } 

     sql = sql.Remove(sql.Length - 1); 

     sql += " from " + TABELA + " WHERE situacao = 'ATIVO' "; 

     return sql; 
    } 

爲了進一步提高事情有點,你可以的string.join,而不是用你的內循環:sql += string.Join(",", dictionary.Keys);這意味着你不需要後刪除多餘的逗號。