gpt4 book ai didi

c# - INSERT INTO 有没有更省事的方法?

转载 作者:行者123 更新时间:2023-11-30 15:58:36 25 4
gpt4 key购买 nike

如果我想将多个对象插入到 SQL Server 数据库中,我似乎必须这样做:

        using (var command = new SqlCommand(@"INSERT INTO Table1 (
Param_1,
Param_2,
Param_3,
...
)
VALUES (
@param1,
@param2,
@param3,
...
)",conn))
{
command.Params.Add("@param1",...);
command.Params.Add("@param2",...);
command.Params.Add("@param3",...);
...
foreach(var o in objects)
{
command.Params["@param1"].Value = o.Param1;
command.Params["@param2"].Value = o.Param2;
command.Params["@param3"].Value = o.Param3;
...
command.ExecuteNonQuery();
}
}

只是把它放在一起就让我费尽了心思,我得到了一张包含 28 个字段的表。我必须分别写出这个长列表 4 次,只有最微不足道的差异(数据库字段名称可能使用不同的命名约定)。这似乎很疯狂;有没有更短的路?

Entity Framework 不是我的选择,它本来是我的第一选择,我必须滚动代码。

最佳答案

如果您完全反对使用外部库,这个怎么样?

void Insert (Dictionary <string, SqlType> cols, Object [] objects)
{
string colNames = string.Join (",", cols.Keys);
string paramNames = string.Join (",", cols.Keys.Select (c=>"@"+c));

using (var command = new SqlCommand(@"INSERT INTO Table1 (" + colNames +
") VALUES (" + paramNames + ")",conn))
{
foreach (var col in cols)
{
command.Params.Add("@" + col.Key, col.Value);
}

foreach(var o in objects)
{
// Here you would have to list them all unless
// your object o is a Dictionary<string, object> or a DataRow.
command.Params["@param1"].Value = o.Param1;
command.Params["@param2"].Value = o.Param2;
command.Params["@param3"].Value = o.Param3;
...
command.ExecuteNonQuery();
}
}
}

关于c# - INSERT INTO 有没有更省事的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43071795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com