[ADO.NET] 怎样使用Jet 4.0打开MDB数据库并生成DataSet?

mwenyuan 2003-10-21 11:30:31
我先建立一个OLEDBConnection MyConn,ConnectionString="Data Source=""C:\Inetpub\wwwroot\soft\database\database.mdb"";Password=;Provider=""Microsoft.Jet.OLEDB.4.0"";Mode=Share Deny None"

,然后建立一个OleDbDataAdapter MyAdapter,Connection属性设置为MyConn,设定好SQL命令

Page_Load的时候,

Dim MyDataSet as New DataSet

MyAdapter.Fill(MyDataSet)

出错

提示 The Microsoft Jet database engine cannot open the file 'C:\Inetpub\wwwroot\soft\database\database.mdb'. It is already opened exclusively by another user, or you need permission to view its data.

可是在ASP中就可以用同样的Connection打开这个数据库,而且这个时候数据库确实没有被打开,是权限的问题,还是代码有问题?

能否给一个使用ADO.NET打开本地OLEDB的例子?
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rgbcn 2003-10-21
  • 打赏
  • 举报
回复
这个错误发生在当IIS使用匿名帐号(通常是IUSR)时,该帐号在NT中对数据库所在的目录没有正确的权限。(这就是为什么在Win95和PWS下没问题,因为win95根本就没有目录权限这一说)检查文件和目录的权限。确定你能够在该目录中有能够新建和删除临时文件的权限。这些临时文件其实是数据库建立在同一个目录下的文件,但是要注意的是,有可能这些文件也可能建立在别的目录,例如 /Winnt。使用NT的文件监视程序监视文件失败时到底是访问了什么目录。这个NT的文件监视程序可以在这个地方下www.sysinternals.com。如果你对数据库使用了一个网络地址,例如映射地址,就要检查一下共享文件和目录的权限,还要检查一下数据源文件(DSN)是否被别的程序标志成为正在使用中,这些别的程序一般是Visual InterDev,关闭任何一个InterDev中的正打开和数据库连接的项目。这个错误还可能发生在这种情况:如果在DSN中使用了一个UNC路径(就是通用命名协议),请改用本地路径进行测试,因为如果对本地数据库使用UNC也可能出错。还可能发生在这种情况,如果服务器要访问Access中的一个表,而这个表却联接在一个网络服务器上。
rgbcn 2003-10-21
  • 打赏
  • 举报
回复
用ASP打开远端MDB文件的方法
2002:11:12 ·来源:开发者俱乐部 liangfukai

  如果你用ODBC connection (DSN or DSN-less)来访问远端的(UNC path)数据库, OLEDB会出现以下错误信息:
Microsoft OLE DB Provider for ODBC Drivers error ’80004005’
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot open the file ’(unknown)’. It is already opened exclusively by another user, or you need permission to view its data.
  你完全可以避免这种错误--ASP和ActiveX支持两种方式打开MDB文件的DSN-less连接,或由其它机器访问MDB文件。
1. DAO database (only for small load)
Dim File, Conn, RS
Const ReadOnly = False
File = "\\server\share\file.mdb"
Set Conn = CreateObject("DAO.DBEngine.35").Workspaces(0).OpenDatabase(File,,ReadOnly)
Set RS = Conn.OpenRecordset(SQL)
2. ADO + Jet OLE DB provider
Dim Conn, RS
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "Microsoft.Jet.OLEDB.4.0"
Conn.Open "\\server\share\file.mdb"
Set RS = Conn.Execute(SQL)
  你得确定使用ASP的用户有NT的数据库及共享访问权限。
  假定有权限的话,你亦可访问其它机器中的开放数据连接:
http://www.pstruh.cz/
Set UM = CreateObject("UserManager.Server")
UM.LogonUser "Login with the rights", "Password", "Domain"
...
open database
...
UM.RevertToSelf

ddangerous169 2003-10-21
  • 打赏
  • 举报
回复
右击mdb文件的属性,把asp_net用户也入

62,046

社区成员

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

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

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

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