如何判断是否以独占方式打开当前数据库?

原创 2004年01月25日 21:18:00

如何判断是否以独占方式打开当前数据库?

 

问题:

如何判断是否以独占方式打开当前数据库?

在链接或者用ADO操作其他数据库时,如果被操作的数据库已经被某用户以独占方式打开,就会出错,如何预先判断该数据库是否已经被独占打开?

 


方法一:


很简单,只要判断 currentproject.connection.ConnectionString中是否包含以下字母
Jet OLEDB:Database Locking Mode=0
写一个函数就可以判断:

Function testLockMode()
    If InStr(CurrentProject.Connection.ConnectionString, "Jet OLEDB:Database Locking Mode=0") > 0 Then
        MsgBox "本数据库已经用独占方式打开"
    Else
        MsgBox "本数据库未用独占方式打开"
    End If
End Function

以下是 debug.print CurrentProject.Connection.ConnectionString 的结果供参考:

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=L:/IBM WinXP/desktop/mdb/重复记录.mdb;Mode=Share Deny Read|Share Deny Write;Extended Properties="";Jet OLEDB:System database=C:/Documents and Settings/ec/Application Data/Microsoft/Access/System.mdw;Jet OLEDB:Registry Path=SOFTWARE/Microsoft/Office/10.0/Access/Jet/4.0;Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False

 

方法二:

很简单,你只要在程序中尝试用独占方式打开数据库即可,如果返回了错误号加以判断即可。就像本站中的很多问题解决方法类似,用错误陷阱即可判断了

Function testLockMode()
    On Error Resume Next
    Dim conn As New ADODB.Connection
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=L:/IBM WinXP/desktop/mdb/重复记录.mdb;Jet OLEDB:Database Locking Mode=0;"
    If Err.Number = -2147467259 Then
        MsgBox "文件已经在使用中,估计是被别人以独占方式打开了"
    End If
End Function

 


方法三:

当然,你还可以直接读取currentdb属性来判断是否已经被独占打开

 

http://www.access911.net 站长收藏

access提示"以独占方式打开或没有权限"的解决方法

在winxp中使用ACCESS动态数据库技术遇到“数据库提示它已经被别的用户以独占方式打开,或没有查看数据的权限”的问题一般出现在“用浏览器打开动态页面”或“使用Dreamweaver连接数据库”的时...
  • baidu_27258505
  • baidu_27258505
  • 2015年07月20日 10:40
  • 3495

如何判断是否以独占方式打开当前数据库?

If InStr(CurrentProject.Connection.ConnectionString, "Jet OLEDB:Database Locking Mode=0") > 0 Then  ...
  • cdbqss1
  • cdbqss1
  • 2006年12月16日 09:22
  • 1127

C# 独占方式打开 Access

最近使用C#连接Access, 总有讨厌的ldb文件. 不喜欢, 如何去掉呢. 看了下独占模式就可以去掉. 网上搜了搜, 都是相互抄一大片... 没有一个能用的. 只好去微软官网上...
  • dingding3224
  • dingding3224
  • 2015年10月13日 14:35
  • 532

ACCESS"数据库提示它已经被别的用户以独占方式打开,或没有查看数据的权限"的问题

 在winxp中使用动态数据库技术遇到ACCESS"数据库提示它已经被别的用户以独占方式打开,或没有查看数据的权限"的问题会出现在(1)用浏览器打开动态页面时(2)使用Dreamweaver连接数据库...
  • haishengwoai
  • haishengwoai
  • 2009年09月04日 11:08
  • 4327

C#访问ACCESS数据库被其他程序独占方式打开无法访问

Asp.net项目用Sqlserver数据库正常,移植到Access就出现问题。其中:“Microsoft Jet 数据库引擎打不开文件'C:\***\*.mdb'。它已经被别的用户以独占方式打开,或...
  • qiyunlei
  • qiyunlei
  • 2012年03月15日 10:51
  • 4791

应用层下拷贝以独占方式打开的文件

 在调用 CreateFile 这个 API 时,若 dwShareMode 这个参数赋为 0;则在此文件句柄被关闭之前,这个文件是无法被其它进程直接读取和拷贝的。比如文件 %SYSTEM%/conf...
  • iiprogram
  • iiprogram
  • 2008年04月21日 10:32
  • 1544

如何判断是否以独占方式打开当前?

  • zgqtxwd
  • zgqtxwd
  • 2008年04月27日 16:23
  • 194

金蝶打开软件时提示以独占的方式被打开

金蝶KIS迷你版、标准版,打开软件时提示以独占的方式被打开解决方法:
  • ener1234
  • ener1234
  • 2016年08月31日 10:53
  • 509

打开被独占的文件方法(一) -- 寻找打开文件的句柄

打开被独占的文件方法(一) -- 寻找打开文件的句柄 2010年06月08日 星期二 11:39 来自:http://hi.baidu.com/wsh_chb/blog/item/e5b2...
  • angelxf
  • angelxf
  • 2012年04月27日 15:48
  • 1520

Excel文件无法导入,错误: 它已经被别的用户以独占方式打开,或没有查看数据的权限。

1. 我们首先再次总结一下 Access 数据库文件的 NTFS 权限设置的缘起: 在 ASP.NET 中默认是以一个叫做 ASPNET 的虚拟用户的身份来访问、操作数据库的,你可以在“控制面板”-“...
  • single_killer
  • single_killer
  • 2010年03月18日 17:25
  • 11929
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何判断是否以独占方式打开当前数据库?
举报原因:
原因补充:

(最多只允许输入30个字)