社区
数据库(包含打印,安装,报表)
帖子详情
如何得到当前使用数据库的用户名和机器名
superzxf
2001-08-06 10:35:34
...全文
209
15
打赏
收藏
如何得到当前使用数据库的用户名和机器名
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
superzxf
2001-08-28
打赏
举报
回复
skydg(飞龙)
谢了!
skydg
2001-08-27
打赏
举报
回复
我只是抄来的:)
skydg
2001-08-27
打赏
举报
回复
152、您想知道有谁正在使用您的 Access 资料库吗?
如果您使用 Access 建立了一个多人使用的资料库环境,有时候您必须要知道有谁正在使用程序连进这个共享的资料库,但是您又不想因为如此而要建立一套完整的 Access 安全系统,您有二个选择:
第一个:
您可以在资料库中建立一个 "Login Table",每次使用者进入或离开系统时就 Update 这个 Table.
第二个:
较好一点,您可以使用 msldbusr.dll,它可以告诉您目前正连进资料库的电脑名称 (Computer Name),这些资料其实是存放在扩展名为 LDB 的文件中。一旦您从 DLL 中抓到这些资料,您便可以送出讯息,通知 Client 端的使用者 (Remote User) 结束应用程序,以中断和资料库的连结,然后您便可以使用 Exclusive Mode 来维护资料库了。
在这里,我们要说明的是第二种方法,也就是使用 msldbusr.dll。它提供了二个 Function,说明如下:
1、LDBUser_GetUsers:呼叫后会返回二部份,一个是使用者阵列,一个是连结到资料库的使用者数。
Declare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" (lpszUserBuffer() _
As String, ByVal lpszFilename As String, ByVal nOptions As Long) As Integer
lpszUserBuffer():返回使用者阵列,注意!必须使用 ReDim 声明成变动阵列!
lpszFilename:资料库名称 ( .mdb 完整路径 ),若 .ldb 文件不存在,会返回错误代码。
nOptions:下参数声明资料回传的型态。可以使用的参数有四个,如下:
1=返回自从 .ldb 产生后,所有曾经使用资料库的使用者机器名称 (Computer Name) 及数目。
2=只返回目前正在使用资料库的使用者机器名称 (Computer Name) 及数目。
4=只返回导致目前资料库损毁的使用者机器名称 (Computer Name)。
8=只返回使用者的总数,但是并不返回使用者阵列。
2、LDBUser_GetError:呼叫 LDBUser_GetUsers 若有错误产生,可根据返回的错误代码找到说明。
Declare Function LDBUser_GetError Lib "MSLDBUSR.DLL" (ByVal nErrorNo As Long) As String
nErrorNo:呼叫 LDBUser_GetUsers 产生错误所返回的代码,介于 -1 至 -14 之间。说明如下:
-1 = Can't open the LDB file. ( 无法开启 LDB 文件 )
-2 = No user connected. ( 没有使用者在使用资料库 )
-3 = Can't create an array. ( 无法建立阵列 )
-4 = Can't redimension array. ( 无法重新建立阵列 )
-5 = Invalid argument passed. ( 传入无效的参数 )
-6 = Memory allocation error. ( 内存配置错误 )
-7 = Bad index. ( 无效的索引 )
-8 = Out of memory. ( 内存不足 )
-9 = Invalid argument. ( 无效的参数 )
-10= LDB is suspected as corrupted. ( LDB 文件可能损毁 )
-11= Invalid argument. ( 无效的参数 )
-12= Unable to read MDB file. ( 无法读取 MDB 文件 )
-13= Can't open the MDB file. ( 无法开启 MDB 文件 )
-14= Can't find the LDB file. ( 找不到 LDB 文件 )
'范例程序:( 移除所有的 Form,请将以下程序复制到 .bas 文件中即可执行 )
Option Explicit
Declare Function LDBUser_GetUsers Lib "MSLDBUSR.DLL" (lpszUserBuffer() _
As String, ByVal lpszFilename As String, ByVal nOptions As Long) As Integer
Declare Function LDBUser_GetError Lib "MSLDBUSR.DLL" (ByVal nErrorNo As Long) As String
Sub MAIN()
Dim psMDBFilename As String
psMDBFilename = InputBox("请输入资料库名称:")
If Len(psMDBFilename) Then
ShowUsers psMDBFilename
End If
End Sub
Sub ShowUsers(psFilename As String)
ReDim lpszUserBuffer(1) As String
Dim psError As String
Dim cUsers As Long
Dim iLoop As Long
'呼叫 LDBUser_GetUsers 返回使用者阵列
cUsers = LDBUser_GetUsers(lpszUserBuffer(), psFilename, 1)
'确认是否返回使用者阵列
If (cUsers = 0) Then
Debug.Print "No Users."
GoTo Exit_ShowUsers
End If
'若有错误则显示错误讯息
If (cUsers < 0) Then
psError = LDBUser_GetError(cUsers)
Debug.Print "Error #:"; cUsers; "--"; psError
GoTo Exit_ShowUsers
End If
'显示使用者阵列
For iLoop = 1 To cUsers
Debug.Print "User "; iLoop; ":"; lpszUserBuffer(iLoop)
Next iLoop
Exit_ShowUsers:
End Sub
msldbusr.dll 下载 17K
http://www.pconline.com.cn/pcedu/empolder/doc/vb/06/msldbusrdll.zip
'除了上面的范例之外,Microsoft 也提供了一个更完整的范例,它有一个容易理解的介面设计:
Source Code 下载 111K
http://www.pconline.com.cn/pcedu/empolder/doc/vb/06/msldbusrsrc.zip
如果您在这个主题中想要更多的资讯,或想取得 Microsoft 提供的更多的工具程序,您可以参考:
http://support.microsoft.com/support/kb/articles/q176/6/70.asp
songyangk
2001-08-27
打赏
举报
回复
如果是ACCESS,好象在同名文件.ldb里存着的是用户名。
superzxf
2001-08-27
打赏
举报
回复
gz
superzxf
2001-08-24
打赏
举报
回复
songyangk的代码试过了,没用!
一川烟草123
2001-08-23
打赏
举报
回复
songyangk(小草)是對的
superzxf
2001-08-23
打赏
举报
回复
gz
chenhw
2001-08-15
打赏
举报
回复
这可难了,我也想知道
superzxf
2001-08-15
打赏
举报
回复
我是说我有一个共享的数据库(如access),我想要在程序中显示当前有哪些用户正在使用该数据库!
songyangk
2001-08-11
打赏
举报
回复
SELECT HOST_NAME(), USER_NAME()
Strator
2001-08-11
打赏
举报
回复
Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long '取计算机名称
Strator
2001-08-11
打赏
举报
回复
机器名称可以用API得到机器名称
'********************************取得计算机名称
Dim Compu As String * 128
Dim CompuName As String
Dim TempLong As Long
Dim X As Integer
TempLong = GetComputerName(Compu, 128)
X = InStr(Compu, Chr(0))
CompuName = Trim(Left(Compu, X - 1)) ‘机器名称
'建立数据库连接
Set PowerDB = New Connection
PowerDB.CursorLocation = adUseClient
PowerDB.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=powersupervise;Data Source=LUGUOFENG"
' PowerDB.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=powersupervise;Data Source=" + CompuName
dahaidao
2001-08-10
打赏
举报
回复
我也想知道,
up,up
superzxf
2001-08-10
打赏
举报
回复
up
Visio对MySQL
数据库
反向工程生成ER
数据库
模型图.pdf
Visio对MySQL
数据库
反向工程生成ER
数据库
模型图.pdf
简单的山寨QQ
1、具有登陆界面,包括服务器IP(或服务器
名
)、
用户
名
、密码。 登录:在
数据库
服务器上验证
用户
名
和密码,如果匹配就进入QQ聊天主界面,否则提示不能登录。 取消:退出即可。 注册:进入用户注册界面。 服务器栏中默认是你要
使用
的服务器
名
字,即该服务器安装的
数据库
,所有qq用户信息都保存在这个服务器的
数据库
里。图片显示的是我试验的服务器
名
字。 登录成功后还要把自己
当前
所在
机器
的IP地址提取出来并保存到
数据库
的个人信息中,替换原来注册或上次
使用
的IP。 2、注册界面,可以让第一次
使用
的用户注册,即给自己在服务器上注册一个
用户
名
、密码、自己所
使用
的
机器
IP、自己的端口号,如图所示: 注册:首先验证密码和确认密码是否一致,如果不一致,则提示,否则,把输入的信息记录到
数据库
中,如果
用户
名
重复也要提示。 其中IP栏目的内容可以由程序自动提取出本机的ip地址,并显示出来,省得用户输入错误。 3、聊天主界面 登陆成功后就进入本届面,界面如下: 界面设计类似简单的QQ界面,可以
使用
BorderLayout布局管理器,在上面(BorderLayou.NORTH)显示“好友列表”四个字,中间部分(BorderLayou.CENTER)显示自己的好友
名
单,
名
单可以用多个JLabel控件(JLabel中添加ImageIcon)显示,或者用JTree控件显示(比较复杂),
名
单中可以显示qq号、昵称(姓
名
)、状态(在线、离线等)。最下边(BorderLayou.SOUTH)可以显示“欢迎您:***”。 好友要求用不同的图标显示在线和不在线的状态。 双击在线的好友
名
字可以打开聊天窗口,而双击不在线的好友不动(即不开启聊天窗口)。 达到这种效果的前提是在登录成功后,获得
当前
登录用户的信息,在本模块根据登录信息获取
用户
名
、获取他的好友列表等数据。
oracle上机指导
安徽工业大学带小品的实验报告,该报告详细介绍了了
数据库
的俄操作
mysql 基本指令集
MYSQL基本指令集,初学者受益比较深...
Oracle 11g 客户端的安装和配置的图文教程
数据库
和客户端在不同的
机器
之上。 在安装之前,在安装Oracle
数据库
的服务器上导航到下面的目录。 将listener.ora和tnsnames.ora中的host中的localhost都改为
机器
的IP地址,我的为192.168.1.102 而后开始安装Oracle客户端 选择定制,可以自己定义安装的组件。 取消对Oracle Scheduler Agent组件的选择。 进行到80%的时候,会运行下面的配置程序。(一般隐藏在
当前
界面之后,不要在
当前
界面傻等啊,呵呵) 主机
名
,最好用IP地址。 更改登录,改成Oracle
数据库
上的
用户
名
和对应密码。 至
数据库(包含打印,安装,报表)
1,217
社区成员
55,952
社区内容
发帖
与我相关
我的任务
数据库(包含打印,安装,报表)
VB 数据库(包含打印,安装,报表)
复制链接
扫一扫
分享
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章