C# 使用线程安全性插入数据的方法。。静态类还是新类?
我想使用parallel将数据插入MySQLC# 使用线程安全性插入数据的方法。。静态类还是新类?,c#,mysql,parallel-processing,thread-safety,C#,Mysql,Parallel Processing,Thread Safety,我想使用parallel将数据插入MySQL Class Database { ... public static void insert(string line) { try { string query = "INSERT INTO db." + line + " VALUES (..)"; using (MySqlConnection conn = new MySqlConnectio
Class Database
{
...
public static void insert(string line)
{
try
{
string query = "INSERT INTO db." + line + " VALUES (..)";
using (MySqlConnection conn = new MySqlConnection(DBconnection))
{
using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (MySqlException ex)
{
Console.WriteLine(ex.Message);
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex.Message);
}
}
}
这是我的问题
Parallel.ForEach(List, value =>
{
// HERE
});
我应该使用哪种代码
Database.insert(something);
或
如果我将“公共静态无效插入”更改为“公共无效插入”
和使用
new Database().insert(something);
哪种代码是线程安全的和更好的?这是一样的吗?使用
void Insert(IEnumerable lines){}
会更好。保持连接打开并使用适当的参数。从C#的角度来看,两者都是线程安全的(所以让我们继续使用静态方法)。当然,从SQL的角度来看,它可能不安全(但这取决于表的状态以及如何管理其中的并发性)。甚至可能您不会加快任何速度,因为每个连接都将锁定,直到前一个连接完成插入。也就是说,为这么小的任务(insert)创建一个连接可能会非常庞大,因此开销可能比好处(在本例中)高得多。如果要在数据库中插入大量数据,那么我会选择批量插入。请看一个例子。@Henkholtman谢谢!你能给我一个示例代码吗@阿德里亚诺啊哈!borh是线程安全的。如果需要将数据插入到不同的表中怎么办?