c#Oledb在foreach循环中添加参数列表

c#Oledb在foreach循环中添加参数列表,c#,.net,excel,oledb,oledbparameter,C#,.net,Excel,Oledb,Oledbparameter,我编写了一个用OleDb创建excel文件的应用程序,问题是当程序运行foreach循环时,它总是在行中写入相同的数据,而不是循环中对象的不同值 代码是: foreach(var user in userList) { cmd.CommandText = @"INSERT INTO [User](Id , Name , Code, Username, Location, CompanyCode, MyDate, Email, MyNote)

我编写了一个用OleDb创建excel文件的应用程序,问题是当程序运行foreach循环时,它总是在行中写入相同的数据,而不是循环中对象的不同值

代码是:

foreach(var user in userList)
{
   cmd.CommandText = @"INSERT INTO [User](Id , Name , Code, Username, Location, 
                  CompanyCode, MyDate, Email, MyNote)
                  VALUES(@Id, @Name, @Code, @Username, @Location)";


  cmd.Parameters.AddRange(new OleDbParameter[]
  {
    new OleDbParameter{ ParameterName = "@Id", Value = user.ID},
    new OleDbParameter{ ParameterName = "@Name", Value = user.NAME  ?? string.Empty},
    new OleDbParameter{ ParameterName = "@Code", Value = user.CODE ??  string.Empty},
    new OleDbParameter{ ParameterName = "@Username", Value = user.USERNAME ?? string.Empty},
    new OleDbParameter{ ParameterName = "@Location", Value = user.LOCATION ?? string.Empty},

  });

cmd.ExecuteNonQuery();
}
我有12个用户,但excel文件有12行,用户相同。 例如:

相反,如果我编写普通查询,如:

cmd.CommandText = @"INSERT INTO [User](Id , Name , Code, Username, Location, CompanyCode, MyDate, Email, MyNote) VALUES(" + company.ID + ", '" + company.NAME + "', '" + company.CODE + "', '" + company.USERNAME + "', '" + company.CODE_LOCATION + "')";
它工作并在文件中写入12个不同的用户。 我怎样才能解决这个问题?? 谢谢你,很抱歉我的英语不好。

加上这个

cmd.Parameters.Clear();
以前

cmd.Parameters.AddRange(new OleDbParameter[]
加上这个

cmd.Parameters.Clear();
以前

cmd.Parameters.AddRange(new OleDbParameter[]

您正在向已具有一组参数的对象添加新的参数范围。 该查询仅使用第一个集合,覆盖在该集合之后添加的其他集合

您需要在每次循环之前清除参数

使用类似于:

cmd.Parameters.Clear();

您正在向已具有一组参数的对象添加新的参数范围。 该查询仅使用第一个集合,覆盖在该集合之后添加的其他集合

您需要在每次循环之前清除参数

使用类似于:

cmd.Parameters.Clear();

在参数示例中,使用对象变量用户,其中在连接字符串查询中使用变量公司。在参数示例中,使用对象变量用户,其中在连接字符串查询中使用变量公司。