在练习WEB数据访问的步骤时,出现了如下不能访问数据库lhz.mdb的错误.“/lhzapp”应用程序中的服务器错误。
--------------------------------------------------------------------------------Microsoft Jet 数据库引擎打不开文件'E:\lhz.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: Microsoft Jet 数据库引擎打不开文件'E:\lhz.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。源错误: 
行 110:        '在此处放置初始化页的用户代码
行 111:        If Not IsPostBack Then
行 112:            ODbDa.Fill(Ds1)   '这行显示为红色
行 113:            DataGrid2.DataBind()
行 114:        End If
 
----------------------------------------------------------------------------
首先排除了以独占方式打开这个可能性,然后是权限问题,我就是用OFFICE里的Access随手建立了一个数据库,几张表,没有出现什么权限设置,这样是不是也要访问权限?按道理我应该有权限啊,我是我这部电脑的唯一主人啊!!我的是XP+NTFS格式还各位能帮我解决这个问题,感激不尽...

解决方案 »

  1.   

    1.你的数据库可能处于打开状态
    2.右击数据库--》属性--->安全--->把everyone分配为可读,可写
    3。如果是xp系统的话 .要打开夹简单文件工程才能进行2操作. 文件夹选项里面有,自己去找找
      

  2.   

    1.你的数据库可能处于打开状态
    ---没有找开,这个我可以肯定 .2.右击数据库--》属性--->安全--->把everyone分配为可读,可写
    ---我右击数据库-->属性,里面根本没有安全选项.3。如果是xp系统的话 .要打开夹简单文件工程才能进行2操作. 文件夹选项里面有,自己去找找
    ---要打开夹简单文件工程才能进行2操作.这句话怎么操作?---我的系统为XP SP2版.
      

  3.   

    我建议
       1、你把数据库文件放入一个文件夹内,不是放在磁盘根目录
       2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可
       3、注意把权限继承下去
      

  4.   

    >>要打开夹简单文件工程才能进行2操作.这句话怎么操作?
    资源管理器->工具-〉文件夹选项-〉查看-〉去掉“使用简单的文件共享”
      

  5.   

    我的是Access 2000,我以前也是这样做的,什么问题都没有,怎么这次突然出来权限问题..晕.. 1、你把数据库文件放入一个文件夹内,不是放在磁盘根目录
       2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可
       3、注意把权限继承下去----对于第二步和第三步不知如何操作,我对着文件夹按右健,选属性,没有找到什么与安全与建立用户等相关的选项.我的电脑水平纯属业余,不能理解,望见凉..
      

  6.   

    放置数据库的文件夹一定要在 NTFS 格式下的分区鼠标右击 → 属性 → 安全 → 添加 →选中 Network Service →选中“修改”
      

  7.   

    你的连接字符串是什么样的?参考这上面关于ACCESS的字符串http://www.connectionstrings.com/
      

  8.   

    2.右击数据库--》属性--->安全--->把everyone分配为可读,可写  2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可
    以上两步我都做了,但还是不行....
      

  9.   

    想起一个问题,数据库若设了密码也会出现此错误连接字串用以下表示
    第一个是进入或打开数据库的密码:DataBase Password= 123456;
    第二个超级用户 Admin 的密码   :User ID=Admin; Password = 123456;
      

  10.   


    连接字符串是用向导一步一步生成,我想应该不会错吧,下面是连接字符串Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source="E:\MyPage\lhzapp\lhz.mdb";Jet OLEDB:Engine Type=5;Provider="Microsoft.Jet.OLEDB.4.0";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1
    这是堆栈跟踪: [OleDbException (0x80004005): Microsoft Jet 数据库引擎打不开文件'E:\MyPage\lhzapp\lhz.mdb'。  它已经被别的用户以独占方式打开,或没有查看数据的权限。]
       System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) +20
       System.Data.OleDb.OleDbConnection.InitializeProvider() +57
       System.Data.OleDb.OleDbConnection.Open() +203
       System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState) +44
       System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
       System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
       System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
       lhzapp.WebForm1.Page_Load(Object sender, EventArgs e) in E:\MyPage\lhzapp\WebForm1.aspx.vb:95
       System.Web.UI.Control.OnLoad(EventArgs e) +67
       System.Web.UI.Control.LoadRecursive() +35
       System.Web.UI.Page.ProcessRequestMain() +731 
      

  11.   

    我知道了,你是通过 VS.Net 创建的连接此连接不会自动关闭,你在 VS.Net 左边的“服务器资源管理器”中把你创建的连接关闭即可
    另更正为:
        第一个是进入或打开数据库的密码: Jet OLEDB:DataBase Password=123456;;
      

  12.   

    此连接不会自动关闭,你在 VS.Net 左边的“服务器资源管理器”中把你创建的连接关闭即可
    ----已按照此步骤操作了--------连接字符串也改成下面这样了
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\lhz.mdb;User Id=admin;Password=123456;但还是不行!!!
      

  13.   

    1、用 Access 打开数据库,会在同一目录出现一个“lhz.ldb”,把密码清空
    2、关闭 Access ,“lhz.ldb”消失
    3、把连接字串变为以下试试
        Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=E:\\MyPage\\lhzapp\\lhz.mdb
    4、注意代码的运行顺序,数据库连接应遵守以下原则:
           用到时应在最晚时间打开
           用完时应在最早关闭看看是不是有重复打开的数据库连接?
      

  14.   

    这个问题已经烦了我两个星期了,开了两次贴来问了,真的很想解决,望各位帮帮我....我把连接字符串改成如下几种还是不行.
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\lhz.mdb;User Id=admin;Password=123456;
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\lhz.mdb;User Id=admin;Password=;
    Provider="Microsoft.Jet.OLEDB.4.0";Data Source="\lhz.mdb";User Id=admin;Password=123456;
    Provider="Microsoft.Jet.OLEDB.4.0";Data Source="\lhz.mdb";User Id=admin;Password=;我是直接在属性里面改字符串的.报的错误都跟先前一样,
      

  15.   

    啊,不对。不好意思,你用的是 VB.NET 
    是不需要双斜杠的
        Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=E:\MyPage\lhzapp\lhz.mdb
      

  16.   

    太感谢cityhunter172(寒羽枫)和各位了,只是还是找不开,还是说:Microsoft Jet 数据库引擎打不开文件'E:\MyPage\lhzapp\lhz.mdb'。 它已经被别的用户以独占方式打开,或没有查看数据的权限。 
      

  17.   

    这是代码:其余的代码就是属性设置了,我的窗体上只有一个GADAGRID控件.
    我重新建了一个数据库,也报同样的错误.
    Public Class WebForm1
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 ".....    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)                                Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If Not IsPostBack Then
                OleDbDataAdapter1.Fill(DataSet11)
                DataGrid1.DataBind()        End If
        End Sub    
    End Class这是DataGrid1的两个属性设置:
    DataGrid1.DataSource=DataSet11
    DataGrid1.DataMember=COMMENTS
      

  18.   

    最后再告诉你一些,若还是不行,我也就爱莫能助了
        1、不要心急,一步一步调试
        2、有 Access 的话,新建一个数据库与一个测试 Table
        3、做一个测试页,页面上啥都没有仅一个 DataGrid 就行
        4、就用 VS.NET 的 OleDbDataAdapter(注意不是 OdbcDataAdapter)拖入页面,用向导设置好后,右键点击在页面下方的 oleDbDataAdapter1 点击“预览数据”。若能看见数据,则说明连接成功。
        5、右击 oleDbDataAdapter1 → 生成数据集 → 新建 DataSet1
        6、在代码里写 
              Me.oleDbConnection1.Open()
              Me.oleDbDataAdapter1.Fill(Me.dataSet11)
              Me.DataGrid1.DataSource =Me.dataSet11
              Me.DataGrid1.DataBind()
              Me.oleDbConnection1.Close()
      

  19.   

    我在本机测试了几遍,只要把 Network Service 的修改权限拿掉就会出现你的情况    在  Me.oleDbDataAdapter1.Fill(Me.dataSet11) 出错因此我猜想你没有把权限继承下去,
    你把数据库不要放在站点目录下,放到其它目录,比如上一层或者单独一个
    因为站点目录下有许多 IIS 的权限在里面,有时不会继承父目录的权限有 QQ 吗?我就不信不能帮你,今晚不睡觉也得把你的事搞定!
      

  20.   

    呵呵,我也有时有这样的问题
    把数据库放到fat32的格式下就没事
    有的时候在NTFS下重新复制一个就没事了~~~
      

  21.   

    在存放数据库的文件夹下加一下everyone权限看能不能解决。
      

  22.   

    mzlhz(没技术得专家分,只能靠接分过日子......) 我不知道我给你提供的方法能不能排除你的困扰,但我以前也遇到过这样的问题,具体排除的方法我记不太清楚了,但大概的还是记得的,你按我说的可以试一下!
        首先打开 Access数据库,记住不是直接点你那个数据库,而是打开Access程序,用这样的方式打开你的数据库:文件->打开-〉选中你的数据库,先等一下,别急于点选择文件窗体上的打开按钮,请点打开按钮右边的三角,选择打开~然后你调试一下程序~看问题解决没~如果没有的话,那就用独占方式打开数据库后再用我上边说的方法打开一遍数据库~如果问题依旧没有解决~就按cityhunter172(寒羽枫)说的方法做个测试页~试试~多试几种方法,就当积累经验了吧~
      

  23.   

    我记得CSDN里有人碰到过这个问题,也给予了相应的解决办法~具体是哪里却不记得了~你查查吧~
      

  24.   

    XP 没用过,但我知道Win 2000 运行 ASP.NET 的进程用户是 ASP.NET 帐户
    Win 2003 运行 ASP.NET 的进程用户是 Network Service在任务管理器中可以看的进程是Win 2000 :aspnet_wp.exe     ASP.NET 帐户
    Win 2003 :w3wp.exe          Network Service