我有一个VB程序。它是使用Access数据库来管理项目信息。该程序可供不同PC的用户使用。我知道PC的当前用户名可以来自
UserPrincipal.Current.DisplayName
我只想在程序启动时显示此用户名,例如,只显示一个消息框,其中包含“XXX正在访问数据库”的信息。
我使用的数据库连接是OleDbConnection,我打开数据库的源是
Private Const DB_PROVIDER As String = "Provider=Microsoft.ACE.OLEDB.12.0"
Private Const DB_SOURCE As String = "Data Source=\\meldc2\X-Drive\Luxi\NSW_OLGR.accdb"
Private Const DB_MODE As String = "Mode=Share Exclusive"
Private Const DB_CONNECTION_STRING As String = DB_PROVIDER + ";" + DB_SOURCE + ";" + DB_MODE
mConnection = New OleDbConnection
mConnection.ConnectionString = DB_CONNECTION_STRING
mConnection.Open()
所以我的问题是“这个连接的API是否与上面的用户名相同?”。我发现如果数据库正在使用,Open()API可能会抛出异常。我是否可以从例外中获取有关用户名的一些信息?
感谢您的帮助!
答案 0 :(得分:0)
由于您的应用未处理登录 - 如果“锁定文件”是“访问登录”对话框,则表明应用了某种级别的安全性。但是,由于您让USER输入信息(所有可以由应用程序处理的信息),您不会从连接字符串...或从数据库中获取它。
报告数据库活动的真正简单方法是访问它的VB应用程序。当您的应用打开连接时,请使用UserPrincipal.Current.DisplayName
或Environment.UserName
执行某些操作。
A)发送包含用户名的网络消息到MessageBox应该显示的位置。
B)打开连接和DB后,应用程序可以进入新的ActivityLog表。如果值得通过msgbox报告,可能值得记录。同样,当连接/ DB关闭时,可以记录一个Exit类型条目。
您使用的名称可能与访问登录名称不匹配,但它肯定会识别用户 无论谁想要监控它,只需将Access打开即可打开观看。或者正如我所提到的,在计时器上编写一个小程序,监视日志表中的新条目。
HTH