OleDbを使用してExcelファイルを作成するアプリケーションを作成すると、プログラムがforeachループを実行したときに、同じ値のデータが常に行に書き込まれるループ内のオブジェクトのc#Oledb 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種類のユーザーを作成します。 どうすればこの問題を解決できますか? 私の悪い英語をありがとうと申し訳ありません。
あなたのパラメータの例では、あなたが変数の会社を使用し、あなたのCONCATENATE文字列のクエリのように、オブジェクト変数のユーザーを使用しています。 – apomene