Ich schreibe eine Anwendung, die eine Excel-Datei mit OleDb erstellt, das Problem ist, dass, wenn das Programm eine foreach-Schleife ausführt, immer die gleichen Daten in der Zeile, nicht den anderen Wert des Objekts in der Schleife.C# Oledb Liste von Parametern in einer foreach Schleife hinzufügen
Der Code ist:
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();
}
Ich habe 12 Benutzer aber die Excel-Datei hat 12 Zeilen mit demselben Benutzer. Beispiel:
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 .......
Stattdessen, wenn ich normale Abfrage schreiben wie:
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 + "')";
Es funktioniert und 12 verschiedene Benutzer in die Datei schreiben. Wie kann ich dieses Problem lösen? Danke und Entschuldigung für mein schlechtes Englisch.
In Ihrem Parameter Beispiel Sie Objektvariable Benutzer verwenden, wo wie auf Ihre Anfrage concatenate Zeichenfolge Variable Unternehmen verwenden. – apomene