从keyvaluepair插入数据库表

时间:2012-11-09 19:48:58

标签: c# key-value

尝试将列表中的值与keyvaluepair中的键进行匹配,并从keyvaluepair中检索相应的值并将其用作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并将其填入参数

1 个答案:

答案 0 :(得分: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循环来实际构建查询..