在练习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格式还各位能帮我解决这个问题,感激不尽...
--------------------------------------------------------------------------------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格式还各位能帮我解决这个问题,感激不尽...
2.右击数据库--》属性--->安全--->把everyone分配为可读,可写
3。如果是xp系统的话 .要打开夹简单文件工程才能进行2操作. 文件夹选项里面有,自己去找找
---没有找开,这个我可以肯定 .2.右击数据库--》属性--->安全--->把everyone分配为可读,可写
---我右击数据库-->属性,里面根本没有安全选项.3。如果是xp系统的话 .要打开夹简单文件工程才能进行2操作. 文件夹选项里面有,自己去找找
---要打开夹简单文件工程才能进行2操作.这句话怎么操作?---我的系统为XP SP2版.
1、你把数据库文件放入一个文件夹内,不是放在磁盘根目录
2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可
3、注意把权限继承下去
资源管理器->工具-〉文件夹选项-〉查看-〉去掉“使用简单的文件共享”
2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可
3、注意把权限继承下去----对于第二步和第三步不知如何操作,我对着文件夹按右健,选属性,没有找到什么与安全与建立用户等相关的选项.我的电脑水平纯属业余,不能理解,望见凉..
以上两步我都做了,但还是不行....
第一个是进入或打开数据库的密码:DataBase Password= 123456;
第二个超级用户 Admin 的密码 :User ID=Admin; Password = 123456;
连接字符串是用向导一步一步生成,我想应该不会错吧,下面是连接字符串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
另更正为:
第一个是进入或打开数据库的密码: Jet OLEDB:DataBase Password=123456;;
----已按照此步骤操作了--------连接字符串也改成下面这样了
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\lhz.mdb;User Id=admin;Password=123456;但还是不行!!!
2、关闭 Access ,“lhz.ldb”消失
3、把连接字串变为以下试试
Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=E:\\MyPage\\lhzapp\\lhz.mdb
4、注意代码的运行顺序,数据库连接应遵守以下原则:
用到时应在最晚时间打开
用完时应在最早关闭看看是不是有重复打开的数据库连接?
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=;我是直接在属性里面改字符串的.报的错误都跟先前一样,
是不需要双斜杠的
Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=E:\MyPage\lhzapp\lhz.mdb
我重新建了一个数据库,也报同样的错误.
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
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()
你把数据库不要放在站点目录下,放到其它目录,比如上一层或者单独一个
因为站点目录下有许多 IIS 的权限在里面,有时不会继承父目录的权限有 QQ 吗?我就不信不能帮你,今晚不睡觉也得把你的事搞定!
把数据库放到fat32的格式下就没事
有的时候在NTFS下重新复制一个就没事了~~~
首先打开 Access数据库,记住不是直接点你那个数据库,而是打开Access程序,用这样的方式打开你的数据库:文件->打开-〉选中你的数据库,先等一下,别急于点选择文件窗体上的打开按钮,请点打开按钮右边的三角,选择打开~然后你调试一下程序~看问题解决没~如果没有的话,那就用独占方式打开数据库后再用我上边说的方法打开一遍数据库~如果问题依旧没有解决~就按cityhunter172(寒羽枫)说的方法做个测试页~试试~多试几种方法,就当积累经验了吧~
Win 2003 运行 ASP.NET 的进程用户是 Network Service在任务管理器中可以看的进程是Win 2000 :aspnet_wp.exe ASP.NET 帐户
Win 2003 :w3wp.exe Network Service