-2

タイプの値をいくつか挿入し たい。4つのループがあり、 vardictvar dict = new Dictionary<string, int>();の変数の横に別の値を挿入したい。これ が私のコードです。

 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();
    }

私の問題は、辞書のデータをフェッチしてデータベースに挿入する方法です

4

2 に答える 2

0

2つの列が必要になります。1つは辞書キー(単語)用で、もう1つは辞書値(頻度)用です。

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();
}
于 2012-05-26T22:10:49.283 に答える
-1

foreach の代わりに FOR ループを使用する必要があります。ループに必要な正しい値を渡し、pair.key を pair[for loop index].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();

    }
}

使用すると、接続は終了後に自動的に破棄されます

于 2012-05-27T02:08:54.363 に答える