(再问)不能访问.mdb数据库的问题..

mzlhz 2005-10-15 11:31:20
在练习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格式

还各位能帮我解决这个问题,感激不尽...

...全文
630 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
cityhunter172 2005-10-17
  • 打赏
  • 举报
回复
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
cityhunter172 2005-10-16
  • 打赏
  • 举报
回复
啊,不对。不好意思,你用的是 VB.NET
是不需要双斜杠的
Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source=E:\MyPage\lhzapp\lhz.mdb
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
这个问题已经烦了我两个星期了,开了两次贴来问了,真的很想解决,望各位帮帮我....

我把连接字符串改成如下几种还是不行.
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=;

我是直接在属性里面改字符串的.报的错误都跟先前一样,
cityhunter172 2005-10-16
  • 打赏
  • 举报
回复
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、注意代码的运行顺序,数据库连接应遵守以下原则:
用到时应在最晚时间打开
用完时应在最早关闭

看看是不是有重复打开的数据库连接?
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
此连接不会自动关闭,你在 VS.Net 左边的“服务器资源管理器”中把你创建的连接关闭即可
----已按照此步骤操作了

--------连接字符串也改成下面这样了
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\lhz.mdb;User Id=admin;Password=123456;

但还是不行!!!
cityhunter172 2005-10-16
  • 打赏
  • 举报
回复
我知道了,你是通过 VS.Net 创建的连接

此连接不会自动关闭,你在 VS.Net 左边的“服务器资源管理器”中把你创建的连接关闭即可


另更正为:
第一个是进入或打开数据库的密码: Jet OLEDB:DataBase Password=123456;;
fanruinet 2005-10-16
  • 打赏
  • 举报
回复
把连接字符串精简一下,自动生成的不一定对
mzlhz 2005-10-16
  • 打赏
  • 举报
回复

连接字符串是用向导一步一步生成,我想应该不会错吧,下面是连接字符串

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


cityhunter172 2005-10-16
  • 打赏
  • 举报
回复
想起一个问题,数据库若设了密码也会出现此错误

连接字串用以下表示
第一个是进入或打开数据库的密码:DataBase Password= 123456;
第二个超级用户 Admin 的密码 :User ID=Admin; Password = 123456;
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
2.右击数据库--》属性--->安全--->把everyone分配为可读,可写

2、对文件夹的安全属性进行设置:加入“Network Service”的修改权限即可


以上两步我都做了,但还是不行....
saucer 2005-10-16
  • 打赏
  • 举报
回复
你的连接字符串是什么样的?参考这上面关于ACCESS的字符串

http://www.connectionstrings.com/
cityhunter172 2005-10-16
  • 打赏
  • 举报
回复
放置数据库的文件夹一定要在 NTFS 格式下的分区

鼠标右击 → 属性 → 安全 → 添加 →选中 Network Service →选中“修改”
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
我的是Access 2000,我以前也是这样做的,什么问题都没有,怎么这次突然出来权限问题..晕..

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

----对于第二步和第三步不知如何操作,我对着文件夹按右健,选属性,没有找到什么与安全与建立用户等相关的选项.我的电脑水平纯属业余,不能理解,望见凉..
fans007 2005-10-16
  • 打赏
  • 举报
回复
mzlhz(没技术得专家分,只能靠接分过日子......) 我不知道我给你提供的方法能不能排除你的困扰,但我以前也遇到过这样的问题,具体排除的方法我记不太清楚了,但大概的还是记得的,你按我说的可以试一下!
首先打开 Access数据库,记住不是直接点你那个数据库,而是打开Access程序,用这样的方式打开你的数据库:文件->打开-〉选中你的数据库,先等一下,别急于点选择文件窗体上的打开按钮,请点打开按钮右边的三角,选择打开~然后你调试一下程序~看问题解决没~如果没有的话,那就用独占方式打开数据库后再用我上边说的方法打开一遍数据库~如果问题依旧没有解决~就按cityhunter172(寒羽枫)说的方法做个测试页~试试~多试几种方法,就当积累经验了吧~
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
不是'设计'模式打开,也一样会出同样的问题的...
zhou_she 2005-10-16
  • 打赏
  • 举报
回复
在存放数据库的文件夹下加一下everyone权限看能不能解决。
netsapper 2005-10-16
  • 打赏
  • 举报
回复
呵呵,我也有时有这样的问题
把数据库放到fat32的格式下就没事
有的时候在NTFS下重新复制一个就没事了~~~
moodboy1982 2005-10-16
  • 打赏
  • 举报
回复
你的数据库是不是经‘设计’模式打开的呀?如果是,那就打不开了。
fans007 2005-10-16
  • 打赏
  • 举报
回复
我记得CSDN里有人碰到过这个问题,也给予了相应的解决办法~具体是哪里却不记得了~你查查吧~
mzlhz 2005-10-16
  • 打赏
  • 举报
回复
经过反复的测试,大概有了点眉目:

首先链接绝对没问题,也绝对不是独占数据库的问题,很明显这是权限问题.
我的硬盘有六个分区,C盘装WIN ME,D盘装XP SP2,其中D盘,E盘是NTFS文件管理系统,其它盘为FAT32.

前面反复不成功是因为数据库放在E盘(NTFS),反来我把数据库移到F盘(FAT32),就成功了.

后来我又反复测试,放在E盘,你无论加什么用户,给予什么权限,都无法成功,而放在F盘,什么都不用做,就能链接成功.


问题是找到了一点,但我就是想不明白,难道数据库不能放在NTFS盘上??这样的话,我们一直都在保留FAT32的文件管理系统???
加载更多回复(11)

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧