2012-05-26 2 views
-2

Я хочу, чтобы вставить некоторые значения типа var dict = new Dictionary<string, int>(); .I имеет 4 петлю и я хочу, чтобы вставить еще значения рядом переменных вара Словаре вот мой кодкак вставить переменный словарь типа в базе данных

var dict = new Dictionary<string, int>(); 
        foreach (string word in wordsbeforesoundex) 
        { 

         if (word == null) 
         { 
          continue; 
         } 
         if (word.Trim() != "") 
         { 
          if (dict.ContainsKey(word)) 
          { 
           dict[word]++; 
          } 
          else 
          { 
           dict[word] = 1; 
          } 
         } 

        } 
    for (int l = 0; l < words.Length; l++) 
    { 
     con.Open(); 

     SqlCommand cmd = new SqlCommand("INSERT INTO TableFFF (Frequency) VALUES (@dict_idx)", con); 


     cmd.Parameters.Add(new SqlParameter("@dict_idx", dict[wordsbeforesoundex[l]])); 


     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 

Моя проблема заключается в том, как извлечь данные в словаре, и вставить его в базу данных

+1

Возможно ли, чтобы вы перефразировали вопрос, который я не могу понять. Если вы хотите найти ключ в словаре, вы можете сделать это, используя свойство dict.Keys. –

+0

Вы ищете 'dict.Keys'? – Blorgbeard

+0

My magic crystal ball говорит: _ «Используйте класс с 4 свойствами как значение» _. –

ответ

0

Вам нужно будет иметь две колонки, одна для словаря ключ (слово), а другой для словаря значения (частоты)

foreach(var pair in dict) 
{ 
    con.Open(); 

    SqlCommand cmd = new SqlCommand("INSERT INTO TableFFF (Word, Frequency) VALUES (@word, @freq)", con); 

    cmd.Parameters.Add(new SqlParameter("@word", pair.Key); 
    cmd.Parameters.Add(new SqlParameter("@freq", pair.Value); 

    cmd.ExecuteNonQuery(); 
    con.Close(); 
} 
+0

Могу ли я использовать вместо foreach ?? –

+0

Я пробовал это, но я получил эту ошибку Нет сопоставления из типа объекта System.Collections.Generic.Dictionary'2 + KeyCollection [[System.String, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089], [System.Int32, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]] к известному встроенному типу управляемого поставщика. –

+0

Кажется, вы пытаетесь поставить 'pair' в качестве параметра вместо o' pair.Key' и 'pair.Value'. Я исправил свой ответ, потому что у него есть опечатка в параметрах (он сказал dict вместо пары) – ivowiblo

-1

Вы должны использовать цикл вместо Еогеаспа .. передать правильные значения вам нужны для цикла и изменить pair.key на пару [для индекса петли] .key

using (SqlCommand cmd = new SqlCommand("INSERT INTO TableFFF (Word, Frequency) VALUES (@word, @freq)", con)) 
{ 
    con.Open(); 
    for (int i = 0; i < dict.Count; i++) 
    { 
     cmd.Parameters.Add(new SqlParameter("@word", pair[i].Key); 
     cmd.Parameters.Add(new SqlParameter("@freq", pair[i].Value); 

     cmd.ExecuteNonQuery(); 

    } 
} 

с с использованием, соединение будет удалено после завершения автоматически

+0

На самом деле. А также, как это ответ? – ivowiblo

+0

@ivowiblo, когда я дал этот ответ, я не знаю, почему, но я не мог видеть ** добавить комментарий ** кнопка .. я забыл написать эту ситуацию в своем ответе .. написал некоторые другие места, но здесь я забыл .. поэтому мне нужно было бы написать это как ответ :( И о цикле for .., поскольку вы знаете лучше меня, цикл for имеет большую производительность, чем цикл foreach;) – sihirbazzz

+0

Да, и ассемблер имеет большую производительность, чем C# – ivowiblo