Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在sql server和c#桌面应用程序出现电源故障时保持登录标志?_C#_Database_Sql Server 2008_Desktop Application - Fatal编程技术网

如何在sql server和c#桌面应用程序出现电源故障时保持登录标志?

如何在sql server和c#桌面应用程序出现电源故障时保持登录标志?,c#,database,sql-server-2008,desktop-application,C#,Database,Sql Server 2008,Desktop Application,我有以下情况: 具有用户登录表的数据库。 c#桌面应用程序。 我要做的是,当我登录时,我在数据库中将该用户的登录标志设置为true,当该用户注销或退出应用程序时,我将该标志更改回false。 这项工作非常完美,但当发生电源故障或有人刚刚终止应用程序进程时,该标志仍为真,因此不允许再次登录,并显示消息“you ready login” 我该如何处理这个问题呢?不用担心这个标志。如果用户有权访问这些表,以便应用程序可以读取该标志,那么他们必须登录 数据库服务器将为您管理连接。您的应用程序将提供适当的

我有以下情况: 具有用户登录表的数据库。 c#桌面应用程序。 我要做的是,当我登录时,我在数据库中将该用户的登录标志设置为true,当该用户注销或退出应用程序时,我将该标志更改回false。 这项工作非常完美,但当发生电源故障或有人刚刚终止应用程序进程时,该标志仍为真,因此不允许再次登录,并显示消息“you ready login”
我该如何处理这个问题呢?

不用担心这个标志。如果用户有权访问这些表,以便应用程序可以读取该标志,那么他们必须登录

数据库服务器将为您管理连接。您的应用程序将提供适当的连接字符串,并且您的安全策略将要求(或不要求)用户名、密码等。当您将数据库作为数据源添加到项目中时,Visual Studio将填充良好的工作代码来处理所有这些问题

在桌面应用程序的单个会话的运行期间,可能会多次建立和断开与服务器的连接。让框架为您处理它:保持简单


如果您需要用户桌面应用程序之外的信息(例如数据库的其他用户),那么您需要在数据库端而不是在客户端代码中实现规则。

@Mike of SST是正确的,但出于您的某种原因

您可以执行以下操作

  • 沿[Login]标志添加另一列,例如用户登录时的DateTimeOfLogin值
  • 在应用程序端,添加一个函数,定期(每10秒或根据您的喜好)更新DateTimeOfLogin列(为了获得最佳性能,请在此上使用线程)

  • 当用户尝试重新登录且[login]标志为true且DateTimeOfLogin值之间的差值超过10秒时,则表示您的应用程序已终止或未正确关闭,或者发生了电源故障。

    实际上,我有一个数据库,多个C#桌面应用程序正在访问它。我使用连接字符串进行连接。我不希望应用程序的其他实例使用相同的凭据登录,所以我将该用户的标志标记为true。但当该用户异常关机时,它仍然为真。现在,当它回来时,应用程序如何知道这是否是一个公平的登录,并且仅仅因为异常终止,标志是否为真,并让他登录。实现这一点的最佳位置可能是SQL Server本身,因为它管理登录。有关一个可能的选项,请参阅以下文章: