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) 并检索相应的描述并将其作为参数填充

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 回答