• 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ

[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的例子?
...全文
21 点赞 收藏 3
写回复
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用户也入
回复 点赞
发动态
发帖子
.NET技术社区
创建于2007-09-28

4.9w+

社区成员

66.8w+

社区内容

.NET技术交流专区
社区公告
暂无公告