c#Oledb在foreach循环中添加参数列表
c# Oledb add list of parameters in a foreach loop
我编写了一个使用 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 行包含同一用户。
示例:
ExcelRow ID NAME CODE USERNAME LOCATION
1 1 Fra 15 Fra NY
2 1 FRA 15 Fra NY
3 1 FRA 15 Fra NY
4 1 FRA 15 Fra NY
5 .......
相反,如果我像这样编写普通查询:
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();
我编写了一个使用 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 行包含同一用户。 示例:
ExcelRow ID NAME CODE USERNAME LOCATION
1 1 Fra 15 Fra NY
2 1 FRA 15 Fra NY
3 1 FRA 15 Fra NY
4 1 FRA 15 Fra NY
5 .......
相反,如果我像这样编写普通查询:
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();