gpt4 book ai didi

c# - 将 List 写入数据库的速度有多快?
转载 作者:太空狗 更新时间:2023-10-30 00:56:57 25 4
gpt4 key购买 nike

请向我解释如何使 WriteToBase() 方法更快,或者如何在不调用每个 insert 的情况下批量插入。

    class MyClass
{
public int a;
public int b;
public int c;
}
void main()
{
List<MyClass> mc = new List<MyClass>();
mc.Add(new MyClass()); //example
mc.Add(new MyClass());

WriteToBase(mc);
}
void WriteToBase(List<MyClass> mc)
{
//Create Connection

string sqlIns = "INSERT INTO table (name, information, other) VALUES (@name, @information, @other)";

SqlCommand cmdIns = new SqlCommand(sqlIns, Connection);
for (int i = 0; i < mc.Count; i++)
{
cmdIns.Parameters.Add("@name", mc[i].a);
cmdIns.Parameters.Add("@information", mc[i].b);
cmdIns.Parameters.Add("@other", mc[i].c);
cmdIns.ExecuteNonQuery();
}
}

有什么想法吗?

最佳答案

您目前多次访问数据库。所有插入应该只有 1 个命中。

试试这段代码:

void WriteToBase(List<MyClass> mc)
{
//Create Connection
using (TransactionScope scope = new TransactionScope())
{
string sqlIns = "INSERT INTO table (name, information, other)
VALUES (@name, @information, @other)";

SqlCommand cmdIns = new SqlCommand(sqlIns, Connection);

for(int i=0;i<mc.Count;i++)
{
cmdIns.Parameters.Add("@name", mc[i].a);
cmdIns.Parameters.Add("@information", mc[i].b);
cmdIns.Parameters.Add("@other", mc[i].c);
cmdIns.ExecuteNonQuery();
}
scope.Complete();
}
}

关于c# - 将 List<Object> 写入数据库的速度有多快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6374005/

25 4 0