0

リスト内の値をキー値ペアのキーと照合し、キー値ペアから対応する値を取得して、SQL パラメータとして使用しようとしています。私の例では @ValueDE です。

foreach (KeyValuePair<int,string> kvp in Valuedescripts)
{
    int val = kvp.Key;
    string descrip = kvp.Value;

    foreach (DataUds data in DataUds)
    {
        using (DB2Connection sqlconn = new DB2Connection())
        {
            sqlconn.Open();

            DB2Command cmdtx = new DB2Command();

            string insert = @"INSERT into LNPY (LN_NR, ITEM_NAME, MR_NR, VALUE)
                            VALUES (@LN, @Nbr, @Val, @ValueDE)";
            cmdtx.Parameters.Add("@Nbr", data.MN);
            cmdtx.Parameters.Add("@Ln", data.LN);
            cmdtx.Parameters.Add("@Val",data.item);

このパラメーターを取得するにはどうすればよいですか? Cmdtx.Parameters.Add("@valueDE", ????

Data.item はリストから取得され、この値を使用して val (kvp.key) に等しく設定し、対応する Descrip を取得してパラメーターとして入力する必要があります

4

1 に答える 1

0

keyvaluepair の値を挿入クエリのパラメーターとして使用する必要があるという点を除いて、あなたが正確に何をしているのかはわかりません。あなたは近いと思います。

foreach (KeyValuePair<int,string> kvp in Valuedescripts)
{
    int val = kvp.Key;
    string descrip = kvp.Value;

    foreach (DataUds data in DataUds)
    {
        //something like
        if (descrip == data.item) //only u know it
        {
            using (DB2Connection sqlconn = new DB2Connection())
            {
                sqlconn.Open();

                DB2Command cmdtx = new DB2Command();

                string insert = @"INSERT into LNPY (LN_NR, ITEM_NAME, MR_NR, VALUE)
                                  VALUES (@LN, @Nbr, @Val, @ValueDE)";
                cmdtx.Parameters.Add("@Nbr", data.MN);
                cmdtx.Parameters.Add("@Ln", data.LN);
                cmdtx.Parameters.Add("@Val",data.item);
                cmdtx.Parameters.Add("@ValueDE", val);
             }

             break; //again only u know it. Will be good if you have only item to match
        }  
    }
}

さらに、オブジェクトのリストをこの方法で db に挿入しないでください。これは、VALUES (...), (....), (......構文を使用した一括挿入よりもはるかに遅くなります。実際にクエリを作成するには、foreachs をループする必要があります。

于 2012-11-09T20:12:54.973 に答える