将多个数据插入数据库时​​可能存在风险

时间:2012-08-29 22:55:22

标签: c# mysql client-server

我有一个带数据库的服务器 - 客户端程序。 客户端将数据发送到服务器,服务器将数据保存到数据库中。 现在的问题是,如果多个客户端同时向服务器发送数据,并且服务器想将其写入数据库,是否会出现问题?

例如: client1调用方法:

client.save_data(data1);

client2调用方法:

client.save_data(data2);

服务器尝试:

save_data(data){
  sql.insert_intoDB(data);
}
insert_intoDB(data)
{
  //not real code, just to show what i mean
   query = "insert into tablename values "+data;
   query.execute;
}

在c#中处理此问题的好方法是什么? 或者根本没有风险?

thx,最好的问候。

2 个答案:

答案 0 :(得分:1)

如果您只是插入数据,那么就不存在并发问题。插入操作按照数据库引擎接收的顺序排队并插入,该顺序始终是线性的。

答案 1 :(得分:1)

  

可能有问题吗?

通常,是的,这个问题称为并发。不同的数据库以不同的方式处理此问题。在处理更新而不是插入时,这通常是一个问题。

我认为大多数(如果不是全部)数据库引擎会单独处理每个插入,因此您不必担心它。但是,为了安全起见,您应该始终使用事务,以便在 出错的情况下可以回滚。

如果您使用C#,我建议使用TransactionScope