尝试将列表中的值与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并将其填入参数
答案 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循环来实际构建查询..