【发布时间】:2013-06-07 18:16:31
【问题描述】:
该应用程序将安装在最多 10 台机器上,其中一台也将用作服务器。一个与服务器永久同步的相同 DataGridView 将在所有这些视图上打开。不同的“用户”将有不同的修改权限等。例如,他们都可以删除表中的行,但只有创建行的人才能修改它等。 我目前在服务器上使用 SQLite。显然,我需要使用 C#-s 套接字连接功能将客户端与服务器连接起来。 问题是,在某些时候,其中一个客户端将尝试访问(例如删除)当前正在被另一个客户端修改的行。这可能会导致很多问题。据我所知,有一种称为数据库锁定和 的技术,它使您能够限制客户端对数据库的访问。 我的问题是: 在进行更改时锁定数据库是否方便?例如,将尝试访问数据库的函数会一次又一次地尝试这样做(在一种循环中),直到它看到它可以修改数据库。那会奏效吗? 有没有更好的解决方案? 也许其他一些数据库提供类似于查询堆叠的东西以实现多访问?
不知道我是否说清楚了。如果需要任何其他信息才能理解此问题,请发表评论。
【问题讨论】:
-
不了解 SQLite,但大多数数据库都有缓解并发问题(通常使用行锁)。您还可以在代码中实现锁定块,或者使用 Semaphore 类查看更多可定制的用法。