【问题标题】:Communication between two computers and a database两台计算机和数据库之间的通信
【发布时间】:2013-10-08 01:17:59
【问题描述】:

我是一名学生程序员,我的工作任务是开发一个软件系统来监控员工的上班、下班和记录时间。员工将使用连接到前台计算机的键盘将其员工 ID 输入到 GUI 中,该 gui 将为他们打卡/打卡。办公室经理将使用另一个 gui 来监控员工的进出,并跟踪办公室里的人。

该项目是 VS 2010 中的一个 windows 窗体项目,有两个 gui(如前所述)和一个 Access 2007 数据库来存储数据。办公室经理 gui 有一个 DataGridView 对象,我想用员工姓名和他上班或下班的时间来填充它。我希望这能实时发生。换句话说,一旦员工打卡,它就会出现在办公室经理 gui 中。我正在寻找的是这种方法的最佳实践。我应该采用客户端/服务器方法吗?我应该有什么触发 数据库以提醒办公室经理 gui 触发事件以获取填充到办公室经理 DataGridView 中的员工的上班/下班时间?

数据库和查询都已经设计好了。我只是在寻找解决这个问题的最佳实践。我是一名大三学生,我一直都来 *.com。这是我的第一个问题,所以无论哪种方式,这对我来说都是一大步:) 提前致谢。

【问题讨论】:

  • MS Access 只是不适合多机场景。这些主要属于多层服务器客户端应用程序。当一台电脑中的一个应用程序并在本地保存/加载所有数据时,访问是好的。不擅长将数据发送到经理表。你可以考虑使用 sql/server 或 mySQL 或 oracle 吗? mysql怎么样?我们可以按照您想要的方式强制 ms-access,但这是不对的。

标签: sql database vb.net user-interface


【解决方案1】:

如果您与 Microsoft 保持一致(并且正在使用 .NET 等),您可能会发现走 SQL Express 路线很容易(Microsoft 设计的所有工具都相似并且很好地集成在一起)。

您可以下载带有高级服务的 SQL Express(任何版本 2005 及以后的版本都适用于该项目,只要它包括管理工作室,并且您可能还需要 Reporting Services)

我的方法是不时地轮询数据库,然后监控时钟输入/输出表的变化。

我不会使用访问,因为它不是实际数据库的最佳解决方案,而且它的扩展性也不是特别好。虽然它适用于您的项目,但值得您使用 SQL Server 来获得一些经验。

我假设您的打卡/打卡视图将只显示员工姓名页面,并且将基于日期 - 在这种情况下,每 5-10 秒在数据库中触发一次查询以获取当前状态将不会不会引起任何问题。

虽然可以将通知从 SQL 推送到客户端,但在客户端设置一个计时器通常也很简单,并且不会对这种规模的应用程序造成任何性能影响

【讨论】:

  • 好的,听起来很简单。我对数据库有点熟悉,我没有提到它在投入生产时会迁移到 sql server 2008 或 2012。我必须阅读数据库状态,但非常感谢您的回复。
  • 通过状态我只是指当时数据的快照(换句话说就是一个查询!) - 如果您已经在查询 Access,那就没什么新东西了