我有一个带数据库的服务器 - 客户端程序。 客户端将数据发送到服务器,服务器将数据保存到数据库中。 现在的问题是,如果多个客户端同时向服务器发送数据,并且服务器想将其写入数据库,是否会出现问题?
例如: 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,最好的问候。
答案 0 :(得分:1)
如果您只是插入数据,那么就不存在并发问题。插入操作按照数据库引擎接收的顺序排队并插入,该顺序始终是线性的。
答案 1 :(得分:1)
可能有问题吗?
通常,是的,这个问题称为并发。不同的数据库以不同的方式处理此问题。在处理更新而不是插入时,这通常是一个问题。
我认为大多数(如果不是全部)数据库引擎会单独处理每个插入,因此您不必担心它。但是,为了安全起见,您应该始终使用事务,以便在 出错的情况下可以回滚。
如果您使用C#,我建议使用TransactionScope。